Creating a NavMesh Agent
Once you have a NavMesh baked for your level it is time to create a character which can navigate the scene. We’re going to build our prototype agent from a cylinder and set it in motion. This is done using a NavMesh Agent component and a simple script.
First let’s create the character:
- Create a cylinder: GameObject > 3D Object > Cylinder.
- The default cylinder dimensions (height 2 and radius 0.5) are good for a humanoid shaped agent, so we will leave them as they are.
- Add a NavMesh Agent component: Component > Navigation > NavMesh Agent.
Now you have simple NavMesh Agent set up ready to receive commands!
When you start to experiment with a NavMesh Agent, you most likely are going to adjust its dimensions for your character size and speed.
The NavMesh Agent component handles both the pathfinding and the movement control of a character. In your scripts, navigation can be as simple as setting the desired destination point - the NavMesh Agent can handle everything from there on.
// MoveTo.cs
using UnityEngine;
using UnityEngine.AI;
public class MoveTo : MonoBehaviour {
public Transform goal;
void Start () {
NavMeshAgent agent = GetComponent<NavMeshAgent>();
agent.destination = goal.position;
}
}
Next we need to build a simple script which allows you to send your character to the destination specified by another Game Object, and a Sphere which will be the destination to move to:
- Create a new C# script (
MoveTo.cs
) and replace its contents with the above script. - Assign the MoveTo script to the character you’ve just created.
- Create a sphere, this will be the destination the agent will move to.
- Move the sphere away from the character to a location that is close to the NavMesh surface.
- Select the character, locate the MoveTo script, and assign the Sphere to the Goal property.
- Press Play; you should see the agent navigating to the location of the sphere.
To sum it up, in your script, you will need to get a reference to the NavMesh Agent component and then to set the agent in motion, you just need to assign a position to its destination property. The Navigation How Tos will give you further examples on how to solve common gameplay scenarios with the NavMesh Agent.
Additional resources
- Navigation HowTos - common use cases for NavMesh Agent, with source code.
- Inner Workings of the Navigation System - learn more about path following.
- NavMesh Agent component reference – full description of all the NavMeshAgent properties.
- NavMesh Agent scripting reference - full description of the NavMeshAgent scripting API.