mirror of
https://github.com/godotengine/godot-docs.git
synced 2026-01-05 22:09:56 +03:00
[-] Replace non-breaking spaces with ASCII spaces
This commit is contained in:
@@ -1,64 +1,64 @@
|
||||
.. _doc_real_time_navigation_3d:
|
||||
.. _doc_real_time_navigation_3d:
|
||||
|
||||
Real Time Navigation (3D)
|
||||
Real Time Navigation (3D)
|
||||
=========================
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Godot provides two nodes which can be used to achieve real time navigation
|
||||
in a 3D environment, :ref:`Navigation <class_Navigation>` and :ref:`NavigationMeshInstance <class_NavigationMeshInstance>`.
|
||||
Godot provides two nodes which can be used to achieve real time navigation
|
||||
in a 3D environment, :ref:`Navigation <class_Navigation>` and :ref:`NavigationMeshInstance <class_NavigationMeshInstance>`.
|
||||
|
||||
A navigation mesh instance is used to hold a :ref:`NavigationMesh <class_NavigationMesh>`,
|
||||
which defines what areas in a scene can be navigated to. The :ref:`Navigation <class_Navigation>`
|
||||
node is then used for pathfinding with the navigation mesh.
|
||||
A navigation mesh instance is used to hold a :ref:`NavigationMesh <class_NavigationMesh>`,
|
||||
which defines what areas in a scene can be navigated to. The :ref:`Navigation <class_Navigation>`
|
||||
node is then used for pathfinding with the navigation mesh.
|
||||
|
||||
Setting up navigation
|
||||
Setting up navigation
|
||||
---------------------
|
||||
|
||||
To add navigation to a scene you need to add a navigation node, then
|
||||
a navigation mesh instance as a child of the navigation node. With the
|
||||
navigation mesh instance selected you need to go to the inspector and
|
||||
create a new navigation mesh.
|
||||
To add navigation to a scene you need to add a navigation node, then
|
||||
a navigation mesh instance as a child of the navigation node. With the
|
||||
navigation mesh instance selected you need to go to the inspector and
|
||||
create a new navigation mesh.
|
||||
|
||||
.. image:: img/new_navigation_mesh.png
|
||||
.. image:: img/new_navigation_mesh.png
|
||||
|
||||
Click on the navigation mesh and you can now alter the properties that
|
||||
define how the navigation mesh is generated. You can find a full
|
||||
description for each of the properties in the class reference here:
|
||||
Click on the navigation mesh and you can now alter the properties that
|
||||
define how the navigation mesh is generated. You can find a full
|
||||
description for each of the properties in the class reference here:
|
||||
:ref:`NavigationMesh <class_NavigationMesh>`.
|
||||
|
||||
After making the changes you want the mesh can be generated by clicking
|
||||
**Bake NavMesh** in the toolbar.
|
||||
After making the changes you want the mesh can be generated by clicking
|
||||
**Bake NavMesh** in the toolbar.
|
||||
|
||||
.. image:: img/bake_navmesh.png
|
||||
.. image:: img/bake_navmesh.png
|
||||
|
||||
Once the mesh has finished generating you should see the transparent
|
||||
navigation mesh above the areas in your scene that can be navigated to.
|
||||
Once the mesh has finished generating you should see the transparent
|
||||
navigation mesh above the areas in your scene that can be navigated to.
|
||||
|
||||
.. image:: img/baked_navmesh.png
|
||||
.. image:: img/baked_navmesh.png
|
||||
|
||||
Keep in mind that the navmesh shows where the center of an entity can
|
||||
go. For example, if you set the agent radius to 0.5 then your
|
||||
navigation mesh will have a distance of 0.5 from any ledges or walls
|
||||
to prevent clipping into the wall or hanging off of the edge.
|
||||
Keep in mind that the navmesh shows where the center of an entity can
|
||||
go. For example, if you set the agent radius to 0.5 then your
|
||||
navigation mesh will have a distance of 0.5 from any ledges or walls
|
||||
to prevent clipping into the wall or hanging off of the edge.
|
||||
|
||||
Generating a path
|
||||
Generating a path
|
||||
-----------------
|
||||
|
||||
To get a path between two areas on a map you use the navigation node
|
||||
method ``get_simple_path()``. The first argument is a Vector3 of the
|
||||
starting location, the next is a Vector3 of the end location. And the
|
||||
last argument is a boolean for whether or not agent properties of a
|
||||
navmesh are considered when generating a path.
|
||||
To get a path between two areas on a map you use the navigation node
|
||||
method ``get_simple_path()``. The first argument is a Vector3 of the
|
||||
starting location, the next is a Vector3 of the end location. And the
|
||||
last argument is a boolean for whether or not agent properties of a
|
||||
navmesh are considered when generating a path.
|
||||
|
||||
The method will return a :ref:`PoolVector3Array <class_PoolVector3Array>` consisting of
|
||||
points that make a path. If there is no way to navigate to the end
|
||||
location the method will return a blank :ref:`PoolVector3Array <class_PoolVector3Array>`.
|
||||
The method will return a :ref:`PoolVector3Array <class_PoolVector3Array>` consisting of
|
||||
points that make a path. If there is no way to navigate to the end
|
||||
location the method will return a blank :ref:`PoolVector3Array <class_PoolVector3Array>`.
|
||||
|
||||
Official example project
|
||||
Official example project
|
||||
------------------------
|
||||
|
||||
There is an official example project on how to use 3D navigation.
|
||||
You can find the repository `here <https://github.com/godotengine/godot-demo-projects/tree/master/3d/navmesh>`__.
|
||||
It can also be found in the asset library.
|
||||
There is an official example project on how to use 3D navigation.
|
||||
You can find the repository `here <https://github.com/godotengine/godot-demo-projects/tree/master/3d/navmesh>`__.
|
||||
It can also be found in the asset library.
|
||||
|
||||
Reference in New Issue
Block a user