Mostrando entradas con la etiqueta OmniLight3D se balancea mediante GDScript; y se puede calibrar desde el inspector;. Mostrar todas las entradas
Mostrando entradas con la etiqueta OmniLight3D se balancea mediante GDScript; y se puede calibrar desde el inspector;. Mostrar todas las entradas

sábado, 15 de agosto de 2026

OmniLight3D se balancea mediante GDScript; y se puede calibrar desde el inspector;

 extends OmniLight3D


# Parámetros editables desde el Inspector

@export_group("Configuración de Balanceo")

@export var speed: float = 2.0       # Velocidad de la oscilación

@export var amplitude: float = 1.5   # Distancia máxima del balanceo (en metros)

@export var axis: Vector3 = Vector3(1, 0, 0) # Eje de movimiento (Por defecto X: izquierda/derecha)


# Guardamos la posición inicial para que el movimiento sea relativo a ella

var initial_position: Vector3

var time_passed: float = 0.0


func _ready() -> void:

# Al arrancar, memorizamos dónde hemos colocado la luz en el mapa

initial_position = position


func _process(delta: float) -> void:

# Acumulamos el tiempo transcurrido

time_passed += delta * speed

# Calculamos el desplazamiento usando la onda seno: sin(t) va de -1 a 1

var offset := axis.normalized() * sin(time_passed) * amplitude

# Aplicamos el balanceo partiendo de la posición inicial

position = initial_position + offset