Unity 3D – Pathfinding – NavMesh Agent – Adventure – Point ‘n Click

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

By |Unity3D, Video Games Development|Commenti disabilitati su Unity 3D – Pathfinding – NavMesh Agent – Adventure – Point ‘n Click

Unity 3D – Pathfinding – NavMesh Obstacles

Unity 3D – Pathfinding – NavMesh Obstacles

These items are not baked into the NavMesh, and thus can move around freely while getting in the way.
Questi ostacoli non possono essere attraversati dal’agente, non sono calcolati nel NavMesh e si possono muovere liberamente nella scena.

1. Create a NavMesh
2. Create a ‘targetNavigation’ object
3. Create a NavMeshAgent

4. Create a game object and name it ‘moving obstacle’

Select ‘moving obstacle’ Inspector> ‘Add component’> Navigation> Nav Mesh Obstacle setup

– Radius: radius of the obstacle collider
– Height: height of ther obstacle collider
– Move Threshold (soglia):
– Carve (intagliare):

By |Unity3D, Video Games Development|Commenti disabilitati su Unity 3D – Pathfinding – NavMesh Obstacles

Unity 3D Game Engine – Pathfinding – Offmesh Links

Unity 3D Game Engine – Pathfinding – Offmesh Links

With Offmesh Links you can link two or more NavMesh.

1. Create EmptyObject, name it ‘targetNavigation’

2. Create a Sphere, name it ‘enemy’ with:
– NavMeshAgent
– SimpleAgentScript.js

SimpleAgentScript.js:


#pragma strict


    public var target : Transform; // inside Inspector assign the Target object
	private var agent: NavMeshAgent;
	
	function Start () {
		agent = GetComponent.<NavMeshAgent>();
	}
	function Update () {

				agent.SetDestination(target.position);
					
	}

Inspector> DRAG AND DROP over variable Target the ‘targetNavigation’ object

Automatic

3. Create 2 Box

4. Select the 2 Box (CTRL+LMB)>

> Navigation> Object> check OffMeshLink Generation

> Navigation> Bake> Generated Off Mesh Links>

– Jump Distance = 10 (maximum agent jump distance)

– Drop Height = 10 (maximum agent drop height)

> Bake

Manually

3. Create 2 Box, name it ‘start’ and ‘end’

4. Select the 2 Box (CTRL+LMB)>

> Navigation> Object> uncheck OffMeshLink Generation

> Navigation> Bake> Generated Off Mesh Links>

– Jump Distance = 10 (maximum agent jump distance)

– Drop Height = 10 (maximum agent drop height)

> Bake

4. Inspector> Select ‘start’> ‘Add Component’> Navigation> OffMesh Links>

OffMesh Link> Hierarchy

– DRAG AND DROP ‘start’ game object over public variable ‘Start’

– DRAG AND DROP ‘end’ game object over public variable ‘End’

> you do not need to re-Bake

The Character not jumping!

Try to re-setup Navigation> Bake> General> – Height
– Step Height

By |Unity3D, Video Games Development|Commenti disabilitati su Unity 3D Game Engine – Pathfinding – Offmesh Links

Unity 3D Game Engine – Pathfinding – NavMesh Agent

Unity 3D Game Engine – Pathfinding – NavMesh Agent

1. Create a NavMesh

2. Create EmptyObject, name it ‘targetNavigation’

3. Create a Sphere, Inspector> TOP RIGHT uncheck ‘Static’, name it ‘enemy’> 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 Sphere and assign:

SimpleAgentScript.js


#pragma strict


    public var target : Transform; // inside Inspector assign the Target object
	private var agent: NavMeshAgent;
	
	function Start () {
		agent = GetComponent.<NavMeshAgent>();
	}
	function Update () {

				agent.SetDestination(target.position);
					
	}

Inspector> DRAG AND DROP over variable Target the ‘targetNavigation’ object

By |Unity3D, Video Games Development|Commenti disabilitati su Unity 3D Game Engine – Pathfinding – NavMesh Agent

Unity 3D – Pathfinding – NavMesh Baking

Unity 3D Game Engine – Pathfinding – NavMesh Baking

Pathfinding or pathing is the plotting, by a computer application, of the shortest route between two points. It is a more practical variant on solving mazes.

Scene

1. MAIN TOP MENU> Gameobject> Create Other> Plane, name it ‘ground’

2. MAIN TOP MENU> Gameobject> Create Other> Sphere, name it ‘enemy’

3. MAIN TOP MENU> Gameobject> Create Other> Cube, name it ‘wall’> DRAG AND DROP inside ‘Prefab’ Folder> Duplicate to create a little labyrinth

Baking – create

To speedup Pathfinding Unity creates a simplified mesh that represents the walkable area.

4. MAIN TOP MENU> Window> Navigation

5. Hierarchy> select all walls e ground> Navigation> Object> check ‘Navigation Static’

OR

Hierarchy> select wall> Inspector> TOP RIGHT check ‘Static’

IMPORTANT: the ‘enemy’ has to have ‘Static’ unchecked.

Notice: it is necessary define the static game objects in the scene

6. Navigation> Object> Navigation Layer> Default, Not Walkable, Jump

7. Navigation> Layers> define:
– name
– cost: maggiore è il costo, più diffice è il percorso, ad esempio un marciapiede avrà cost=1, un terreno fangoso cost=3, quando verrà calcolato il percorso migliore il player guidato dal computer preferirà il percorso con un cost più basso.

8. Navigation> Bake> setup parameters:

General>
– Radius: how close a navigating character can get to a wall (quanto si può avvicinare al muro il personaggio)
– Height: the height of the area may not be reachable (altezza massima dell’area raggiungibile)
– Max Slope: the threshold of steepness where a ramp becomes a wall (oltre la pendenza definita l’area è considerata un muro)
– Step Height: any step greater than this height results in a disconnected walkable area (oltre questa altezza il personaggio viene bloccato)

General Off Mesh Links>
– Drop Height:
– Jump Distance:

Advanced
– Min Region Area: superficie minima che verra inclusa nell’area calpestabile, questo parametro è per evitare eccessivi frazionamenti della NavMesh
– With Inaccurancy%: precisione nel calcolo della larghezza
– Height Inaccurancy%: precisione nel calcolo dell’altezza
– Height Mesh:

7. Navigation> BOTTOM RIGHT> ‘Bake’, a blue NavMesk appears!

Baking – delete

Navigation> BOTTOM RIGHT> ‘Clear’, it removes the NavMesh!

By |Unity3D, Video Games Development|Commenti disabilitati su Unity 3D – Pathfinding – NavMesh Baking