Physics2D
Namespace:
namespace Lenga\Engine\Core;
class Physics2D
Methods
getGravity
public static function getGravity(): Vector2
Returns the global 2D gravity vector applied to dynamic Rigidbody2D components that have gravity enabled.
setGravity
public static function setGravity(Vector2 $gravity): void
Sets the global 2D gravity vector. Individual bodies still use useGravity and gravityScale to opt in and scale this value.
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\Debug;
use Lenga\Engine\Core\Physics2D;
use Lenga\Engine\Core\Vector2;
use Lenga\Engine\Core\Vector3;
class PhysicsQueries extends Behaviour
{
public function update(): void
{
Physics2D::setGravity(new Vector2(0, -9.8));
Debug::log('Gravity: ' . Physics2D::getGravity());
// Raycast in 2D
$origin = new Vector3(0, 0, 0);
$direction = new Vector3(1, 0, 0);
$hit = Physics2D::raycast($origin, $direction, 100.0);
if ($hit !== null) {
Debug::log('Hit: ' . $hit->gameObject->name);
}
// Overlap circle
$circle = Physics2D::overlapCircleAll(new Vector3(0, 0, 0), 5.0);
Debug::log('Objects in circle: ' . count($circle));
// Overlap box
$box = Physics2D::overlapBoxAll(new Vector3(0, 0, 0), new Vector3(2, 2, 0));
foreach ($box as $collider) {
Debug::log('Overlapping: ' . $collider->gameObject->name);
}
}
}