this post was submitted on 17 Dec 2023
6 points (100.0% liked)

Godot

5876 readers
2 users here now

Welcome to the programming.dev Godot community!

This is a place where you can discuss about anything relating to the Godot game engine. Feel free to ask questions, post tutorials, show off your godot game, etc.

Make sure to follow the Godot CoC while chatting

We have a matrix room that can be used for chatting with other members of the community here

Links

Other Communities

Rules

We have a four strike system in this community where you get warned the first time you break a rule, then given a week ban, then given a year ban, then a permanent ban. Certain actions may bypass this and go straight to permanent ban if severe enough and done with malicious intent

Wormhole

[email protected]

Credits

founded 1 year ago
MODERATORS
 

I want to create a "gradual colour change" effect in Godot.

eg: some_set_font_color_func(Color8(255,n,n) where n gradually decreases to make the text fade from white to red.

I can't figure out what function I would use in place of some_set_font_color_func to change a font's colour.

Godot themes are somewhat confusing. Given some var var UI:control how would I set the colour of any font(s) contained within that node?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] -1 points 11 months ago* (last edited 11 months ago)

Tried copying this post into chatGPT:

In Godot, you can achieve a gradual color change effect for a font by using the modulate property of the ColorRect or NinePatchRect (used in Control nodes) that contains the Label node. This property allows you to multiply the color of the node and its children, providing a way to create a color tint.

Here's an example of how you could achieve the gradual color change effect using a Label node within a Control node:

extends Control

var label: Label
var color_change_speed: float = 1.0
var current_color: Color = Color(1, 1, 1, 1)  # Initial color (white)

func _ready():
    label = $Label  # Assuming your Label node is named "Label"
    label.modulate = current_color
    # Call a function to start the gradual color change
    start_color_change()

func start_color_change():
    # Schedule a function to be called every frame
    # The function `_process(delta)` will be called continuously
    set_process(true)

func _process(delta):
    # Gradually decrease the red component of the color
    current_color.r -= color_change_speed * delta
    # Set the modified color to the label
    label.modulate = current_color

    # Check if the red component has reached a certain threshold (e.g., 0)
    if current_color.r <= 0:
        # Stop the color change
        set_process(false)

In this example, the _ready function sets up the initial state, and the start_color_change function initiates the gradual color change by enabling the _process function. The _process function is then called continuously, updating the label's color each frame.

Adjust the color_change_speed variable to control the speed of the color change. You can modify this example to suit your specific requirements.

Helpful or counterproductive? I'll give it a try later.

Update: modulate seems to be a Godot 4 function, so this won't work for me.