A* Pathfinding Project  3.8
The A* Pathfinding Project for Unity 3D
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Events Macros Groups Pages
RVOController Class Reference

RVO Character Controller. More...

Detailed Description

RVO Character Controller.

Designed to be used as a drop-in replacement for the Unity Character Controller, it supports almost all of the same functions and fields with the exception that due to the nature of the RVO implementation, desired velocity is set in the Move function and is assumed to stay the same until something else is requested (as opposed to reset every frame).

For documentation of many of the variables of this class: refer to the Pathfinding.RVO.IAgent interface.

Note
Requires an RVOSimulator in the scene
See Also
Pathfinding.RVO.IAgent
RVOSimulator
A* Pro Feature:
This is an A* Pathfinding Project Pro feature only. This function/class/variable might not exist in the Free version of the A* Pathfinding Project or the functionality might be limited
The Pro version can be bought here

Public Member Functions

void Awake ()
 
void Move (Vector3 vel)
 Set the desired velocity for the agent.
 
void OnDisable ()
 
void OnDrawGizmos ()
 
void OnEnable ()
 
void Teleport (Vector3 pos)
 Teleport the agent to a new position.
 
void Update ()
 

Public Attributes

float agentTimeHorizon = 2
 How far in the time to look for collisions with other agents.
 
Vector3 center
 Center of the agent relative to the pivot point of this game object.
 
RVOLayer collidesWith = (RVOLayer)(-1)
 Layer mask specifying which layers this agent will avoid.
 
bool debug
 
bool enableRotation = true
 
float height = 1
 Height of the agent.
 
RVOLayer layer = RVOLayer.DefaultAgent
 Specifies the avoidance layer for this agent.
 
bool locked
 A locked unit cannot move.
 
bool lockWhenNotMoving = true
 Automatically set locked to true when desired velocity is approximately zero.
 
LayerMask mask = -1
 Layer mask for the ground.
 
int maxNeighbours = 10
 Max number of other agents to take into account.
 
float maxSpeed = 2
 Max speed of the agent.
 
float neighbourDist = 10
 Maximum distance to other agents to take them into account for collisions.
 
float obstacleTimeHorizon = 2
 How far in the time to look for collisions with obstacles.
 
float radius = 5
 Radius of the agent.
 
float rotationSpeed = 30
 
IAgent rvoAgent
 Reference to the internal agent.
 
float wallAvoidFalloff = 1
 How much the wallAvoidForce decreases with distance.
 
float wallAvoidForce = 1
 An extra force to avoid walls.
 

Protected Member Functions

void UpdateAgentProperties ()
 

Properties

Vector3 position [get]
 Current position of the agent.
 
Vector3 velocity [get]
 Current velocity of the agent.
 

Private Attributes

float adjustedY
 
Vector3 desiredVelocity
 Current desired velocity.
 
Vector3 lastPosition
 Position for the previous frame.
 
Simulator simulator
 Reference to the rvo simulator.
 
Transform tr
 Cached tranform component.
 

Static Private Attributes

static RVOSimulator cachedSimulator
 To avoid having to use FindObjectOfType every time.
 
static readonly Color GizmoColor = new Color(240/255f, 213/255f, 30/255f)
 

Member Function Documentation

void Awake ( )
void Move ( Vector3  vel)

Set the desired velocity for the agent.

Note that this is a velocity (units/second), not a movement delta (units/frame).

void OnDisable ( )
void OnDrawGizmos ( )
void OnEnable ( )
void Teleport ( Vector3  pos)

Teleport the agent to a new position.

The agent will be moved instantly and not show ugly interpolation artifacts during a split second. Manually changing the position of the transform will in most cases be picked up as a teleport automatically by the script.

During the simulation frame the agent was moved manually, local avoidance cannot fully be applied to the agent, so try to avoid using it too much or local avoidance quality will degrade.

void Update ( )
void UpdateAgentProperties ( )
protected

Member Data Documentation

float adjustedY
private
float agentTimeHorizon = 2

How far in the time to look for collisions with other agents.

RVOSimulator cachedSimulator
staticprivate

To avoid having to use FindObjectOfType every time.

Vector3 center

Center of the agent relative to the pivot point of this game object.

RVOLayer collidesWith = (RVOLayer)(-1)

Layer mask specifying which layers this agent will avoid.

You can set it as CollidesWith = RVOLayer.DefaultAgent | RVOLayer.Layer3 | RVOLayer.Layer6 ...

This can be very useful in games which have multiple teams of some sort. For example you usually want that the team agents avoid each other, but you do not want them to avoid the enemies.

See Also
http://en.wikipedia.org/wiki/Mask_(computing)
bool debug
Vector3 desiredVelocity
private

Current desired velocity.

bool enableRotation = true
readonly Color GizmoColor = new Color(240/255f, 213/255f, 30/255f)
staticprivate
float height = 1

Height of the agent.

In world units

Vector3 lastPosition
private

Position for the previous frame.

Used to check if the agent has moved manually

RVOLayer layer = RVOLayer.DefaultAgent

Specifies the avoidance layer for this agent.

The collidesWith mask on other agents will determine if they will avoid this agent.

bool locked

A locked unit cannot move.

Other units will still avoid it. But avoidance quailty is not the best.

bool lockWhenNotMoving = true

Automatically set locked to true when desired velocity is approximately zero.

This prevents other units from pushing them away when they are supposed to e.g block a choke point.

LayerMask mask = -1

Layer mask for the ground.

The RVOController will raycast down to check for the ground to figure out where to place the agent.

int maxNeighbours = 10

Max number of other agents to take into account.

A smaller value can reduce CPU load, a higher value can lead to better local avoidance quality.

float maxSpeed = 2

Max speed of the agent.

In units/second

float neighbourDist = 10

Maximum distance to other agents to take them into account for collisions.

Decreasing this value can lead to better performance, increasing it can lead to better quality of the simulation.

float obstacleTimeHorizon = 2

How far in the time to look for collisions with obstacles.

float radius = 5

Radius of the agent.

float rotationSpeed = 30
IAgent rvoAgent

Reference to the internal agent.

Simulator simulator
private

Reference to the rvo simulator.

Transform tr
private

Cached tranform component.

float wallAvoidFalloff = 1

How much the wallAvoidForce decreases with distance.

The strenght of avoidance is:

str = 1/dist*wallAvoidFalloff
See Also
wallAvoidForce
float wallAvoidForce = 1

An extra force to avoid walls.

This can be good way to reduce "wall hugging" behaviour.

Property Documentation

Vector3 position
get

Current position of the agent.

Vector3 velocity
get

Current velocity of the agent.


The documentation for this class was generated from the following file: