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.

If the avoidance behavior should also change with the locomotion e.g. only avoid while standing or only avoid other agents in the same locomotion state, switch the actor's avoidance agent to another avoidance map with each locomotion change.

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.