Physics2D
Namespace:
namespace Lenga\Engine\Core;
class Physics2D
Methods
layerMask
public static function layerMask(int ...$layers)
raycast
public static function raycast(Vector3 $origin,
Vector3 $direction,
float $distance,
bool $includeTriggers = true,
?int $layerMask = null,)
raycastAll
public static function raycastAll(Vector3 $origin,
Vector3 $direction,
float $distance,
bool $includeTriggers = true,
?int $layerMask = null,)
@return list
circleCast
public static function circleCast(Vector3 $origin,
float $radius,
Vector3 $direction,
float $distance,
bool $includeTriggers = true,
?int $layerMask = null,)
circleCastAll
public static function circleCastAll(Vector3 $origin,
float $radius,
Vector3 $direction,
float $distance,
bool $includeTriggers = true,
?int $layerMask = null,)
@return list
boxCast
public static function boxCast(Vector3 $origin,
Vector3 $size,
Vector3 $direction,
float $distance,
bool $includeTriggers = true,
?int $layerMask = null,)
boxCastAll
public static function boxCastAll(Vector3 $origin,
Vector3 $size,
Vector3 $direction,
float $distance,
bool $includeTriggers = true,
?int $layerMask = null,)
@return list
overlapPoint
public static function overlapPoint(Vector3 $point,
bool $includeTriggers = true,
?int $layerMask = null,)
overlapCircleAll
public static function overlapCircleAll(Vector3 $center,
float $radius,
bool $includeTriggers = true,
?int $layerMask = null,)
@return list
overlapBoxAll
public static function overlapBoxAll(Vector3 $center,
Vector3 $size,
bool $includeTriggers = true,
?int $layerMask = null,)
@return list
Example
use Lenga\Engine\Core\Behaviour;
use Lenga\Engine\Core\Physics2D;
use Lenga\Engine\Core\Vector2;
class PhysicsQueries extends Behaviour
{
public function update(): void
{
// Raycast in 2D
$origin = new Vector2(0, 0);
$direction = new Vector2(1, 0);
$hit = Physics2D::raycast($origin, $direction, 100.0);
if ($hit !== null) {
Debug::log('Hit: ' . $hit->gameObject->name);
}
// Overlap circle
$circle = Physics2D::overlapCircle(new Vector2(0, 0), 5.0);
Debug::log('Objects in circle: ' . count($circle));
// Overlap box
$box = Physics2D::overlapBox(new Vector2(0, 0), new Vector2(2, 2));
foreach ($box as $collider) {
Debug::log('Overlapping: ' . $collider->gameObject->name);
}
// Set gravity
Physics2D::setGravity(new Vector2(0, -9.8));
}
}