# Collision
# Description
The Collision namespace provides collision detection functionality, used to determine collision relationships between skills, rays, and objects in the game.
# How to Use
// Check if there is a collision on the path from start to end
bool hasCollision = Collision::HasCollision(startPos, endPos);
// Get the first collision point on the path from start to end
Vector3 collisionPoint = Collision::GetFirstCollision(startPos, endPos);
// Set collision detection to ignore a specific unit
Collision::IgnoreUnit(myHero);
# HasCollision
bool HasCollision(Vector3 const& start, Vector3 const& end, CollisionFlags flags = CollisionFlags::All)
Checks if there are any collisions on the path from start to end.
Parameter | Type | Description |
---|---|---|
start | Vector3 const& | Path starting coordinate |
end | Vector3 const& | Path ending coordinate |
flags | CollisionFlags | Collision detection flags, defaults to detecting all types |
Vector3 startPos = myHero.GetPosition();
Vector3 endPos = targetUnit.GetPosition();
// Check for collision with any object
bool hasAnyCollision = Collision::HasCollision(startPos, endPos);
// Only check for collision with minions
bool hasMinionsCollision = Collision::HasCollision(startPos, endPos, CollisionFlags::Minions);
// Check for collision with minions or heroes
bool hasCollision = Collision::HasCollision(startPos, endPos, CollisionFlags::Minions | CollisionFlags::Heroes);
# GetFirstCollision
Vector3 GetFirstCollision(Vector3 const& start, Vector3 const& end, CollisionFlags flags = CollisionFlags::All)
Gets the coordinate of the first collision point on the path from start to end.
Parameter | Type | Description |
---|---|---|
start | Vector3 const& | Path starting coordinate |
end | Vector3 const& | Path ending coordinate |
flags | CollisionFlags | Collision detection flags, defaults to detecting all types |
Vector3 startPos = myHero.GetPosition();
Vector3 endPos = startPos + Vector3(1000.0f, 0, 0);
// Get the first collision point
Vector3 collisionPoint = Collision::GetFirstCollision(startPos, endPos);
// Only detect the first collision point with walls
Vector3 wallCollisionPoint = Collision::GetFirstCollision(startPos, endPos, CollisionFlags::Walls);
# IgnoreUnit
void IgnoreUnit(Unit* unit, bool ignore = true)
Sets whether to ignore a specific unit in collision detection.
Parameter | Type | Description |
---|---|---|
unit | Unit* | Pointer to the unit to be set |
ignore | bool | Whether to ignore, true means ignore, false means don't ignore, defaults to true |
// Ignore the collision of your own hero
Collision::IgnoreUnit(myHero);
// Resume detecting collision with your own hero
Collision::IgnoreUnit(myHero, false);
# GetCollisionUnits
std::vector<Unit*> GetCollisionUnits(Vector3 const& start, Vector3 const& end, float radius, CollisionFlags flags = CollisionFlags::All)
Gets all units that collide with the specified radius on the path from start to end.
Parameter | Type | Description |
---|---|---|
start | Vector3 const& | Path starting coordinate |
end | Vector3 const& | Path ending coordinate |
radius | float | Collision detection radius |
flags | CollisionFlags | Collision detection flags, defaults to detecting all types |
Vector3 startPos = myHero.GetPosition();
Vector3 endPos = targetPos;
float skillRadius = 100.0f;
// Get all units colliding on the skill path
std::vector<Unit*> collisionUnits = Collision::GetCollisionUnits(startPos, endPos, skillRadius);
// Only get units colliding with heroes
std::vector<Unit*> heroCollisions = Collision::GetCollisionUnits(startPos, endPos, skillRadius, CollisionFlags::Heroes);
← Quick Start Console →