PhantomEngine-Logo-Icon-W-Text.png

Docs

Docs       Manual       Reference       Changelog       Main Site

Manual

AR Pathfinding

Set Up

  1.  Set up Phantom Scene (See: Setup Guide)

    Recommended: Also have Meshing enabled (See: Spatial Mapping)
     

  2.  Drag pathfinding grid prefab into scene hierarchy.
     

  3.  Set Pathfinding Grid Variables “Grid World Size”, “Unwalkable”, and “Node Width”
     

Recommended Settings:

Grid World Size:   X: 15, Y:0, Z:15

Unwalkable:   Include layers “PhantomTech_Hidden”, and any other layers you wish to be detected as obstacles.

Node Width:   0.2

(Recommended that the Y position on the game object itself is set to somewhere between -1 and -1.5)

PGrid.JPG

    4.  Attach “Pathfinding” component on to the same Game Object that you want to have use pathfinding.

    5.  In the Pathfinding component, drag your Pathfinding Grid game object to the variable slot named “Map”.

    6.  Set Pathfinding component variables “Speed” and “Rotation Speed”.
 

Recommended Settings:

Speed:   0.25

Rotation Speed:   5

(Target can be set here or left empty and set by a script with a reference to the pathfinding component)

2.JPG

    7.  Create a reference to the pathfinding component in your own script, on the object that you want to use                pathfinding.

Define Path

Before pathfinding can work we need to set a desired target destination. We can assign this through the Pathfinding.SetTarget() function. (We can also drag a game object into “Target” slot the Pathfinding component from the Unity Editor as seen above)

3.JPG

(An example Unity Start() function defining a pathfinding target by passing a Unity GameObject)

Pathfinding.SetTarget() has 2 overloads that allow for setting target either as a Vector3 position or a Unity GameObject. Passing a GameObject will allow pathfinding to follow an object even if its transform position changes.

(Note: Pathfinding always solves from our objects current position.)

Running Pathfinding

There are two ways to Start/Stop pathfinding. We can explicitly define the pathfinding state with the following functions:

Pathfinding.Resume()

Pathfinding.Pause()

Alternatively, we can toggle the pathfinding state using the following function:

Pathfinding.Toggle()

Movement

In order for the Pathfinding script to move your object, we must provide a move speed and a rotation speed. These values can be adjusted on the Pathfinding component in the Unity inspector.

4.JPG

Alternatively we can modify these values through script with the following fields:

Pathfinding.m_speed

Pathfinding.m_rotationSpeed

If we do not want to have the Pathfinding script manage the movement of our object (for example, if we want the object to move via animation), we simply leave Pathfinding.m_speed at 0. We may still want to have a Pathfinding.m_rotationSpeed set to a value greater than 0.

State Checking

PhantomTech.Pathfinding contains the following Booleans that allow us to check the current state of pathfinding:

m_atTarget – Use to check if pathfinder is at destination

m_isMoving – Use to check if pathfinder is currently moving. (Only applies if pathfinding script is managing the pathfinder movement.)

Return Path

Pathfinding.GetPath() can be called to return an array of Vector3s.