viernes, 28 de marzo de 2025

Barra de vida en Godot 4.4 en 3d; estudio GDScript;

 extends Area3D


var score = 10


@onready var sprite = $Sprite2D  # Cambiado a Sprite2D

@onready var label_resta = $"Label resta"


func _ready():

actualizar_visualizacion()


func _on_area_entered(area: Area3D) -> void:

#$AudioStreamPlayer3D.play()

score -= 1

actualizar_visualizacion()


if score < 0:

get_tree().change_scene_to_file("res://ESCENAS/1-world_environmentESCENA-1-.tscn")


func actualizar_visualizacion():

label_resta.text = str(score)

var escala = float(score) / 10.0  # Escala basada en la puntuación (0 a 1)

sprite.scale = Vector2(escala, escala)  # Escala uniforme en 2D (Sprite2D)

if score <= 0:

sprite.visible = false  # O puedes usar queue_free() para eliminar el nodo


func _on_timer_timeout() -> void:

pass


-------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------

 Explicación; Se me ocurrió crear un tipo de barra de vida para Godot 4.4. en 3d asociando un grafico al contador de puntos, cuando un personaje choca con una columna se le baja la puntuación 1 punto, a la vez esta coordinado con un grafico, e pensado en un corazón que se va des escalando de forma coordinada ala puntuación que va perdiendo el personaje.........entonces el corazón se va empequeñeciendo dando sensación de perdida de vida........Esto lo hice con ayuda de la IA, yo de programar no tengo ni idea¡¡¡

Conseguí también un cambio de escena al morir el personaje….


martes, 25 de marzo de 2025

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)

sábado, 15 de marzo de 2025

GDScript para Godot 4.4 imita efecto de parpadeo de luz de una antorcha;

 extends OmniLight3D


@export var intensidad_base: float = 1.0  # Intensidad base de la luz

@export var rango_variacion: float = 0.5  # Rango de variación de la intensidad

@export var velocidad_parpadeo: float = 5.0  # Velocidad de parpadeo


func _process(delta):

# Genera un valor aleatorio dentro del rango de variación

var variacion = randf_range(-rango_variacion, rango_variacion)


# Calcula la nueva intensidad de la luz

var nueva_intensidad = intensidad_base + variacion


# Aplica la nueva intensidad a la luz

light_energy = nueva_intensidad


# Modifica el rango de la luz para simular el parpadeo

var variacion_rango = randf_range(-0.2, 0.2)

omni_range = 9 + variacion_rango # Puedes ajustar el rango base (5)