Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Unterstützung für verschiedene Akteur-Forbewegungsarten

../../_images/nav_actor_locomotion.png

Um verschiedene Fortbewegungsarten von Akteuren wie Kauern und Kriechen zu unterstützen, ist ein ähnlicher Map-Aufbau wie bei der Unterstützung von Unterstützung verschiedener Akteurstypen erforderlich.

Backen Sie verschiedene Navigations-Meshes mit einer angemessenen Höhe für geduckte oder kriechende Akteure, damit sie Wege durch die engen Abschnitte in Ihrer Spielwelt finden können.

Wenn ein Akteur seinen Bewegungszustand ändert, z.B. aufsteht, sich duckt oder krabbelt, wird die entsprechende Karte nach einem Pfad abgefragt.

Wenn sich das Ausweichverhalten auch mit der Fortbewegung ändern soll, z.B. nur im Stehen ausweichen oder nur anderen Agenten im gleichen Fortbewegungszustand ausweichen, wechseln Sie bei jeder Änderung der Fortbewegung den Ausweichagenten der Akteure auf eine andere Ausweich-Map.

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)

Bemerkung

Während eine Pfadabfrage für mehrere Maps sofort ausgeführt werden kann, wird der Wechsel der Map des Ausweichagenten erst bei der nächsten Serversynchronisation wirksam.