# Exportamos la variable de velocidad.
@export var velocidad : float = 2.0
# Un array para guardar las 4 direcciones de movimiento.
# 0: Eje Z (adelante)
# 1: Eje X (derecha)
# 2: Eje -X (izquierda)
# 3: Eje -Z (atrás)
var direcciones : Array = [
Vector3(0, 0, 1), # Adelante en el eje Z
Vector3(1, 0, 0), # Derecha en el eje X
Vector3(-1, 0, 0), # Izquierda en el eje -X
Vector3(0, 0, -1) # Atrás en el eje -Z
]
# Un índice para saber en qué dirección del array estamos.
# Variables para manejar el tiempo manualmente.
var tiempo_transcurrido : float = 0.0
var intervalo_de_cambio : float = 0.5
func _physics_process(delta):
# Sumamos el tiempo de cada fotograma a nuestra variable.
tiempo_transcurrido += delta
# Si el tiempo transcurrido es mayor o igual al intervalo de 0.5 segundos...
if tiempo_transcurrido >= intervalo_de_cambio:
# Reiniciamos el contador de tiempo restando el intervalo.
# Esto evita errores si el tiempo excede el límite por poco.
tiempo_transcurrido -= intervalo_de_cambio
# Incrementamos el contador para pasar a la siguiente dirección.
paso_actual += 1
# Usamos el operador de módulo (%) para que el contador vuelva a 0
# después de llegar a 3 (0, 1, 2, 3, 0, 1...).
paso_actual %= 4
# Obtenemos la dirección actual del array y la multiplicamos por la velocidad.
velocity = direcciones[paso_actual] * velocidad
# Aplicamos el movimiento y gestionamos las colisiones.
move_and_slide()
No hay comentarios:
Publicar un comentario