For the complete documentation index, see llms.txt. This page is also available as Markdown.

Agentes de movimiento/NPCs

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 usado para guiado y búsqueda de rutas.

Lo más común es usarlo para:

  • Solicitar una ruta hacia un objetivo (set_path_target)

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

  • Moverse a través de geometría simple de colisionadores

Esta página cubre el movimiento y la búsqueda de rutas. Para la construcción/consulta de navmeshes y detalles de triggers de colisionadores, 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 (ajústalo a ella en cada frame).
    // Pasa null para borrar.
    set_navmesh_to_lock_to :: method(navmesh: Navmesh);

    // Ajustes/estado comunes
    movement_speed:   float;
    agent_radius:     float;
    friction:         float;
    velocity:         v2;
    input_this_frame: v2;
}

Física y triggers de movimiento CSL

Las entidades Movement_Agent tienen una ruta de física CSL para un movimiento balístico simple.

Colisión: los colisionadores habilitados no trigger del agente bloquean contra los colisionadores del mundo habilitados no trigger, teniendo en cuenta category_bits / mask_bits el filtrado. El movimiento se detiene en el primer impacto y se desliza a lo largo de la superficie impactada.

Los callbacks de trigger pertenecen al colisionador y no requieren un Movement_Agent.

Búsqueda de rutas (establecer un objetivo)

Llama a set_path_target en cada frame mientras la entidad deba seguir moviéndose. Una sola llamada no es un comando de movimiento persistente.

set_path_target se procesa de forma asíncrona con otros agentes. El resultado devuelto es el dato de búsqueda de ruta completado más reciente, así que el primer frame 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:

Llámalo con null para borrar.

Creando NPCs en movimiento

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

Última actualización