Unity 3D – Pathfinding – NavMesh Agent – Adventure – Point ‘n Click
1. Create a NavMesh
2. Create a Sphere, Inspector> TOP RIGHT uncheck ‘Static’, name it ‘hero’
Hierarchy select ‘hero’> Inspector> ‘Add Component’> Navigation> NavMeshAgent, setup:
– Radius: l’ingombro dell’agente
– Speed: massima velocità dell’agente (utile per i giochi di corsa!)
– Acceleration: accelerazione massima dell’agente
– Angular Speed: velocità con la quale è in grado di girare
– Stopping Distance: distanza alla quale inizia a rallentare in prossimità di ‘targetNavigation’
– Auto Traverse Off Mesh Link:
– Auto Braking: se attivo l’agente si ferma automaticamento al raggiungimento di ‘targetNavigation’
– Auto Repath: se attivo l’agente ricalcola il percorso se quello precedente non è più valido
– Height: l’altezza dell’agente
– Base Offset: offset verticale del collider dell’agente
– Obstacle Aviodance Type: High Quality – Low Quality – precisione del calcolo per schivare gli ostacoli (meno è accurato, meno risorse occupa)
– Avoidance Priority: priorità nella navigazione, un personaggio con priorità 1 avrà la precedenza (passa prima) rispetto un personaggio con priorità 2
– NavMesh Walkable: quale ‘Navigation Layer’ può attraversare
4. Select the ‘hero’ and assign:
SimpleAgentScript.js
#pragma strict
// Script to move a NavMeshAgent to the place where
// the mouse is clicked.
private var agent: NavMeshAgent;
function Start () {
agent = GetComponent.<NavMeshAgent>();
}
function Update () {
var hit: RaycastHit;
// When the mouse is clicked...
if (Input.GetMouseButtonDown(0)) {
// If the click was on an object then set the agent's
// destination to the point where the click occurred.
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, hit)) {
agent.SetDestination(hit.point);
}
}
}