A* Pathfinding Project
4.0.3
The A* Pathfinding Project for Unity 3D
|
Handles collision checking for graphs. More...
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. | |
float | height = 2F |
Height of capsule or length of ray when checking for collision. | |
bool | heightCheck = true |
Toggle height check. | |
LayerMask | heightMask = -1 |
Layer mask to use for height check. | |
LayerMask | mask |
Layer mask to use for collision check. | |
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. | |
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.
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.
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
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 |
|
private |
|
private |
float fromHeight = 100 |
The height to check from when checking height.
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 |
Layer mask to use for height check.
LayerMask mask |
Layer mask to use for collision check.
This should only contain layers of objects defined 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 |
Toggles thick raycast.
float thickRaycastDiameter = 1 |
Diameter of the thick raycast in nodes.
1 equals nodeSize
ColliderType type = ColliderType.Capsule |
Collision shape to use.
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.
|
private |
bool use2D |
Use Unity 2D Physics API.