person-walkingAgentes de movimiento/PNJ

Usa Movement_Agent para mover entidades con búsqueda de rutas y restricciones de navmesh.

Agentes de movimiento

Movement_Agent es un componente auxiliar de movimiento que se usa para dirigir y calcular rutas.

Lo más común es usarlo para:

  • Solicitar una ruta hacia un objetivo (set_path_target)

  • Restringir una entidad al espacio transitable (ajustarla a un Navmesh)

circle-info

Esta página cubre el movimiento y el cálculo de rutas. Para construir/consultar navmeshes, consulta Navmesh y colisión.

Referencia de la API de Movement_Agent

Movement_Agent :: class : Component {
    Set_Path_Target_Result :: struct {
        success:        bool;
        next_point:     v2;
        move_direction: v2;
    }

    // Solicita una ruta hacia el objetivo a una velocidad dada.
    set_path_target :: method(target: v2, speed: float) -> Set_Path_Target_Result;

    // Restringe este agente a una navmesh (ajustarlo a ella cada fotograma).
    // Pasa null para limpiar.
    set_navmesh_to_lock_to :: method(navmesh: Navmesh);

    // Ajuste/estado común
    movement_speed:   float;
    friction:         float;
    velocity:         v2;
    input_this_frame: v2;
}
circle-exclamation

Búsqueda de rutas (establecer un objetivo)

Llama a set_path_target cada fotograma (o siempre que cambie tu objetivo).

circle-info

set_path_target se procesa más adelante en el fotograma en paralelo con otros agentes, así que el primer fotograma en que estableces un nuevo objetivo puede no devolver success == true.

Bloquear el movimiento a una navmesh (permanecer en el espacio transitable)

Si una entidad nunca debe salir del espacio transitable, bloquéala a una navmesh:

Llamarlo con null para limpiar.

Creación de NPCs en movimiento

Este es un NPC mínimo de “seguir al jugador” usando un agente de movimiento:

Última actualización