Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Підтримуйте пересування різних акторів

../../_images/nav_actor_locomotion.png

Для підтримки пересування різних акторів, як-от присідання та повзання, потрібні такі ж налаштування карти, як і для підтримки Підтримка різних типів акторів.

Створюйте різні навігаційні сітки з відповідною висотою для скорчених або повзаючих акторів, щоб вони могли знаходити шляхи через ті вузькі ділянки вашого ігрового світу.

Коли актор змінює стан пересування, напр. встає, починає присідати або повзати, запитайте відповідну карту для шляху.

Якщо поведінка уникання також має змінюватися разом з пересуванням, напр. уникайте лише стоячи або лише уникайте інших агентів у тому самому стані пересування, перемикайте агента уникнення актора на іншу карту уникнення з кожною зміною пересування.

func update_path():

    if actor_standing:
        path = NavigationServer3D.map_get_path(standing_navigation_map_rid, start_position, target_position, true)
    elif actor_crouching:
        path = NavigationServer3D.map_get_path(crouched_navigation_map_rid, start_position, target_position, true)
    elif actor_crawling:
        path = NavigationServer3D.map_get_path(crawling_navigation_map_rid, start_position, target_position, true)

func change_agent_avoidance_state():

    if actor_standing:
        NavigationServer3D.agent_set_map(avoidance_agent_rid, standing_navigation_map_rid)
    elif actor_crouching:
        NavigationServer3D.agent_set_map(avoidance_agent_rid, crouched_navigation_map_rid)
    elif actor_crawling:
        NavigationServer3D.agent_set_map(avoidance_agent_rid, crawling_navigation_map_rid)

Примітка

Хоча запит шляху можна виконати відразу для кількох карт, перемикач карти агента уникнення почне діяти лише після наступної синхронізації сервера.