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); } } }