domingo, 13 de abril de 2025

Ejemplo de IA persecucion de enemigos con Godot 4.4; Y GDScript que corrige que el enemigo mientras persige, no lo aga de espaldas;

 


Ejemplo de IA persecucion de enemigos con Godot 4.4;





extends CharacterBody3D

const SPEED = 9.0
const ACCELERATION = 8.5 # Ajusta este valor para la velocidad de respuesta deseada
@onready var navAgent = $NavigationAgent3D
#@onready var target = $"../Player" # Descomenta esta línea si tu jugador se llama "Player"
@onready var target = $"../CharacterBody3D" # Asegúrate de que esta ruta sea correcta para tu jugador


func _physics_process(delta: float) -> void:

# Elimina o comenta la rotación manual si quieres que siempre mire al objetivo
# rotate_y(0.11)

# Añadir gravedad.
if not is_on_floor():
velocity += get_gravity() * delta

if target: # Verifica si el objetivo existe
_update_target_position() # Actualiza la posición del objetivo primero

var currentLocation = global_transform.origin
var nextLocation = navAgent.get_next_path_position()
var nextVelocity = (nextLocation - currentLocation).normalized() * SPEED

velocity = velocity.move_toward(nextVelocity, ACCELERATION * delta) # Usa delta para suavizar la aceleración
move_and_slide()

# Orientar al enemigo hacia la dirección del movimiento (siguiente punto de la ruta)
if nextVelocity.length_squared() > 0.01: # Evita rotaciones cuando no hay movimiento significativo
look_at(global_transform.origin + nextVelocity, Vector3.UP)

else:
print("El objetivo (jugador) no existe.")

func _update_target_position():
if target:
navAgent.target_position = target.global_transform.origin
else:
print("El objetivo (jugador) no existe. No se puede actualizar la posición del NavigationAgent.")



s
solucinado el tema de que persigan de frente y no de espaldas

No hay comentarios:

Publicar un comentario