sábado, 22 de marzo de 2025

GDScript en Godot 4.4 extends AudioStreamPlayer3D alterna el sonido y lo disminuye y aumenta aleatoriamente;

 extends AudioStreamPlayer3D


@export var min_interval: float = 2.5

@export var max_interval: float = 3.5

@export var fade_out_duration: float = 1.0 # Duración del fade-out en segundos.

@export var fade_in_duration: float = 0.5 # Duración del fade-in en segundos.


var timer: float = 0.0

var is_playing: bool = false

var fade_timer: float = 0.0

var initial_volume: float = 0.0


func _ready():

    timer = randf_range(min_interval, max_interval)

    initial_volume = volume_db


func _process(delta):

    timer -= delta

    fade_timer -= delta


    if timer <= 0.0:

        if is_playing:

            # Inicia el fade-out.

            fade_timer = fade_out_duration

        else:

            # Inicia el fade-in.

            fade_timer = fade_in_duration

            play()


        is_playing = !is_playing

        timer = randf_range(min_interval, max_interval)


    # Efecto de fade-out/fade-in.

    if fade_timer > 0.0:

        if is_playing:

            # Fade-in.

            volume_db = lerp(-80.0, initial_volume, 1.0 - (fade_timer / fade_in_duration))

        else:

            # Fade-out.

            volume_db = lerp(initial_volume, -80.0, 1.0 - (fade_timer / fade_out_duration))

    elif is_playing:

        volume_db = initial_volume #aseguramos que el volumen este al original cuando termina el fade in.

GDScript en Godot 4.4 AudioStreamPlayer3D reproduzca y pause el sonido aleatoriamente cada 8 segundos;

 extends AudioStreamPlayer3D


@export var min_interval: float = 8 # Intervalo mínimo en segundos.

@export var max_interval: float = 8 # Intervalo máximo en segundos.


var timer: float = 0.0

var is_playing: bool = false


func _ready():

# Inicia el temporizador con un intervalo aleatorio.

timer = randf_range(min_interval, max_interval)


func _process(delta):

timer -= delta


if timer <= 0.0:

# Alterna el estado de reproducción.

if is_playing:

stop()

else:

play()


is_playing = !is_playing


# Reinicia el temporizador con un nuevo intervalo aleatorio.

timer = randf_range(min_interval, max_interval)

extends Label GDScript en Godot 4.4 para escalar un texto aleatoriamente y variar su color;

 extends Label


@export var min_scale: float = 1.0

@export var max_scale: float = 1.2

@export var speed: float = 0.4

@export var min_color: Color = Color(1.0, 0.0, 0.0) # Rojo

@export var max_color: Color = Color(1.0, 1.0, 1.0) # Blanco


var scale_direction: int = 1

var current_scale: float = 1.0


func _process(delta):

current_scale += scale_direction * speed * delta


if current_scale > max_scale:

current_scale = max_scale

scale_direction = -1

elif current_scale < min_scale:

current_scale = min_scale

scale_direction = 1


scale = Vector2(current_scale, current_scale)


# Interpolación del color

var color_ratio = (current_scale - min_scale) / (max_scale - min_scale)

modulate = min_color.lerp(max_color, color_ratio)

extends Label GDScript en Godot 4.4 para aumentar y disminuir el tamaño del texto de forma aleatoria;

 extends Label


@export var min_scale: float = 1.0  # Escala mínima del Label

@export var max_scale: float = 1.2  # Escala máxima del Label

@export var speed: float = 0.3  # Velocidad de la animación


var scale_direction: int = 1  # 1 para aumentar, -1 para disminuir

var current_scale: float = 1.0


func _process(delta):

# Actualiza la escala actual

current_scale += scale_direction * speed * delta


# Invierte la dirección si alcanza los límites

if current_scale > max_scale:

current_scale = max_scale

scale_direction = -1

elif current_scale < min_scale:

current_scale = min_scale

scale_direction = 1


# Aplica la escala al Label

scale = Vector2(current_scale, current_scale)