Skip to content

Commit b39e8a1

Browse files
authored
Merge pull request godotengine#8716 from smix8/navlink_example
Add script example for NavigationLink
2 parents 3b9e85b + 99677ea commit b39e8a1

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

tutorials/navigation/navigation_using_navigationlinks.rst

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,71 @@ The visibility of the debug can also be controlled in the Editor 3D Viewport giz
5151
A navigation link does not provide any automated movement through the link. Instead, when
5252
an agent reaches the position of a link, game code needs to react (e.g. through area triggers) and provide means for the agent
5353
to move through the link to end up at the links other position (e.g. through teleport or animation) to continue along the path.
54+
55+
Navigation link script templates
56+
--------------------------------
57+
58+
The following script uses the NavigationServer to create a new navigation link.
59+
60+
.. tabs::
61+
.. code-tab:: gdscript 2D GDScript
62+
63+
extends Node2D
64+
65+
var link_rid: RID
66+
var link_start_position: Vector2
67+
var link_end_position: Vector2
68+
69+
func _ready() -> void:
70+
link_rid = NavigationServer2D.link_create()
71+
72+
var link_owner_id: int = get_instance_id()
73+
var link_enter_cost: float = 1.0
74+
var link_travel_cost: float = 1.0
75+
var link_navigation_layers: int = 1
76+
var link_bidirectional: bool = true
77+
78+
NavigationServer2D.link_set_owner_id(link_rid, link_owner_id)
79+
NavigationServer2D.link_set_enter_cost(link_rid, link_enter_cost)
80+
NavigationServer2D.link_set_travel_cost(link_rid, link_travel_cost)
81+
NavigationServer2D.link_set_navigation_layers(link_rid, link_navigation_layers)
82+
NavigationServer2D.link_set_bidirectional(link_rid, link_bidirectional)
83+
84+
# Enable the link and set it to the default navigation map.
85+
NavigationServer2D.link_set_enabled(link_rid, true)
86+
NavigationServer2D.link_set_map(link_rid, get_world_2d().get_navigation_map())
87+
88+
# Move the 2 link positions to their intended global positions.
89+
NavigationServer2D.link_set_start_position(link_rid, link_start_position)
90+
NavigationServer2D.link_set_end_position(link_rid, link_end_position)
91+
92+
.. code-tab:: gdscript 3D GDScript
93+
94+
extends Node3D
95+
96+
var link_rid: RID
97+
var link_start_position: Vector3
98+
var link_end_position: Vector3
99+
100+
func _ready() -> void:
101+
link_rid = NavigationServer3D.link_create()
102+
103+
var link_owner_id: int = get_instance_id()
104+
var link_enter_cost: float = 1.0
105+
var link_travel_cost: float = 1.0
106+
var link_navigation_layers: int = 1
107+
var link_bidirectional: bool = true
108+
109+
NavigationServer3D.link_set_owner_id(link_rid, link_owner_id)
110+
NavigationServer3D.link_set_enter_cost(link_rid, link_enter_cost)
111+
NavigationServer3D.link_set_travel_cost(link_rid, link_travel_cost)
112+
NavigationServer3D.link_set_navigation_layers(link_rid, link_navigation_layers)
113+
NavigationServer3D.link_set_bidirectional(link_rid, link_bidirectional)
114+
115+
# Enable the link and set it to the default navigation map.
116+
NavigationServer3D.link_set_enabled(link_rid, true)
117+
NavigationServer3D.link_set_map(link_rid, get_world_3d().get_navigation_map())
118+
119+
# Move the 2 link positions to their intended global positions.
120+
NavigationServer3D.link_set_start_position(link_rid, link_start_position)
121+
NavigationServer3D.link_set_end_position(link_rid, link_end_position)

0 commit comments

Comments
 (0)