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

Handles collision checking for graphs. More...

Detailed Description

Handles collision checking for graphs.

Mostly used by grid based graphs

Public Member Functions

bool Check (Vector3 position)
 Returns if the position is obstructed.
 
Vector3 CheckHeight (Vector3 position)
 Returns the position with the correct height.
 
Vector3 CheckHeight (Vector3 position, out RaycastHit hit, out bool walkable)
 Returns the position with the correct height.
 
RaycastHit[] CheckHeightAll (Vector3 position)
 Returns all hits when checking height for position.
 
void DeserializeSettingsCompatibility (GraphSerializationContext ctx)
 
void Initialize (GraphTransform transform, float scale)
 Sets up several variables using the specified matrix and scale.
 
Vector3 Raycast (Vector3 origin, out RaycastHit hit, out bool walkable)
 Same as CheckHeight, except that the raycast will always start exactly at origin.
 

Public Attributes

bool collisionCheck = true
 Toggle collision check.
 
float collisionOffset
 Height above the ground that collision checks should be done.
 
float diameter = 1F
 Diameter of capsule or sphere when checking for collision.
 
float fromHeight = 100
 The height to check from when checking height ('ray length' in the inspector).
 
float height = 2F
 Height of capsule or length of ray when checking for collision.
 
bool heightCheck = true
 Toggle height check.
 
LayerMask heightMask = -1
 Layers to be included in the height check.
 
LayerMask mask
 Layers to be treated as obstacles.
 
const float RaycastErrorMargin = 0.005F
 Offset to apply after each raycast to make sure we don't hit the same point again in CheckHeightAll.
 
RayDirection rayDirection = RayDirection.Both
 Direction of the ray when checking for collision.
 
bool thickRaycast
 Toggles thick raycast.
 
float thickRaycastDiameter = 1
 Diameter of the thick raycast in nodes.
 
ColliderType type = ColliderType.Capsule
 Collision shape to use.
 
bool unwalkableWhenNoGround = true
 Make nodes unwalkable when no ground was found with the height raycast.
 
Vector3 up
 Direction to use as UP.
 
bool use2D
 Use Unity 2D Physics API.
 

Private Attributes

float finalRadius
 diameter * scale * 0.5.
 
float finalRaycastRadius
 thickRaycastDiameter * scale * 0.5.
 
Vector3 upheight
 up * height.
 

Member Function Documentation

bool Check ( Vector3  position)

Returns if the position is obstructed.

If collisionCheck is false, this will always return true.

Vector3 CheckHeight ( Vector3  position)

Returns the position with the correct height.

If heightCheck is false, this will return position.

Vector3 CheckHeight ( Vector3  position,
out RaycastHit  hit,
out bool  walkable 
)

Returns the position with the correct height.

If heightCheck is false, this will return position.
walkable will be set to false if nothing was hit. The ray will check a tiny bit further than to the grids base to avoid floating point errors when the ground is exactly at the base of the grid

RaycastHit [] CheckHeightAll ( Vector3  position)

Returns all hits when checking height for position.

Warning
Does not work well with thick raycast, will only return an object a single time
void DeserializeSettingsCompatibility ( GraphSerializationContext  ctx)
void Initialize ( GraphTransform  transform,
float  scale 
)

Sets up several variables using the specified matrix and scale.

See Also
GraphCollision.up
GraphCollision.upheight
GraphCollision.finalRadius
GraphCollision.finalRaycastRadius
Vector3 Raycast ( Vector3  origin,
out RaycastHit  hit,
out bool  walkable 
)

Same as CheckHeight, except that the raycast will always start exactly at origin.

walkable will be set to false if nothing was hit. The ray will check a tiny bit further than to the grids base to avoid floating point errors when the ground is exactly at the base of the grid

Member Data Documentation

bool collisionCheck = true

Toggle collision check.

float collisionOffset

Height above the ground that collision checks should be done.

For example, if the ground was found at y=0, collisionOffset = 2 type = Capsule and height = 3 then the physics system will be queried to see if there are any colliders in a capsule for which the bottom sphere that is made up of is centered at y=2 and the top sphere has its center at y=2+3=5.

If type = Sphere then the sphere's center would be at y=2 in this case.

float diameter = 1F

Diameter of capsule or sphere when checking for collision.

When checking for collisions the system will check if any colliders overlap a specific shape at the node's position. The shape is determined by the type field.

A diameter of 1 means that the shape has a diameter equal to the node's width, or in other words it is equal to nodeSize .

If type is set to Ray, this does not affect anything.

float finalRadius
private

diameter * scale * 0.5.

Where scale usually is nodeSize

See Also
Initialize
float finalRaycastRadius
private

thickRaycastDiameter * scale * 0.5.

Where scale usually is nodeSize

See Also
Initialize
float fromHeight = 100

The height to check from when checking height ('ray length' in the inspector).

As the image below visualizes, different ray lengths can make the ray hit different things. The distance is measured up from the graph plane.

float height = 2F

Height of capsule or length of ray when checking for collision.

If type is set to Sphere, this does not affect anything.

bool heightCheck = true

Toggle height check.

If false, the grid will be flat

LayerMask heightMask = -1

Layers to be included in the height check.

LayerMask mask

Layers to be treated as obstacles.

const float RaycastErrorMargin = 0.005F

Offset to apply after each raycast to make sure we don't hit the same point again in CheckHeightAll.

RayDirection rayDirection = RayDirection.Both

Direction of the ray when checking for collision.

If type is not Ray, this does not affect anything

bool thickRaycast
float thickRaycastDiameter = 1

Diameter of the thick raycast in nodes.

1 equals nodeSize

ColliderType type = ColliderType.Capsule

Collision shape to use.

Pathfinding.ColliderType

bool unwalkableWhenNoGround = true

Make nodes unwalkable when no ground was found with the height raycast.

If height raycast is turned off, this doesn't affect anything.

Vector3 up

Direction to use as UP.

See Also
Initialize
Vector3 upheight
private

up * height.

See Also
Initialize
bool use2D

Use Unity 2D Physics API.

See Also
http://docs.unity3d.com/ScriptReference/Physics2D.html

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