Skip to content

Class: Physics2DSystem ​

Unity-style 2D physics over a pluggable IPhysics2DBackend. Runs in Update — the fixed step — after scripts, animation, tweens and schedules, so what they did this tick is simulated this tick. Each step:

  1. links components to bodies / fixtures / joints (creating, rebuilding, dropping),
  2. picks up transform edits (a static body follows its transform; a dynamic one is teleported; a kinematic one is driven there so it pushes what's in the way),
  3. steps the world and dispatches the contact / trigger / joint-break events. Physics2DPoseSystem (PreRender) then writes the simulated poses into the world transforms.

It owns dirty on Rigidbody2D, the colliders and the joints. Nothing exists outside a run: in the editor's edit mode the Update phase is detached, so OnStart / OnStop bound the world.

Extends ​

Implements ​

Constructors ​

Constructor ​

ts
new Physics2DSystem(): Physics2DSystem;

Returns ​

Physics2DSystem

Inherited from ​

System.constructor

Properties ​

PropertyModifierTypeDefault valueInherited from
enabledpublicbooleantrueSystem.enabled
parallelpublicbooleanfalseSystem.parallel

Accessors ​

autoSimulation ​

Get Signature ​

ts
get autoSimulation(): boolean;
Returns ​

boolean

Set Signature ​

ts
set autoSimulation(v): void;
Parameters ​
ParameterType
vboolean
Returns ​

void

Methods ​

GetBackend() ​

ts
GetBackend(): 
  | IPhysics2DBackend
  | null;

Returns ​

| IPhysics2DBackend | null


GetLayersCollide() ​

ts
GetLayersCollide(a, b): boolean;

Parameters ​

ParameterType
anumber
bnumber

Returns ​

boolean


GetName() ​

ts
GetName(): string;

Returns ​

string

Overrides ​

System.GetName


GetOrder() ​

ts
GetOrder(): SystemOrder;

Ordered: what they moved this tick is simulated this tick.

Returns ​

SystemOrder


GetPhase() ​

ts
GetPhase(): SystemPhase;

Returns ​

SystemPhase

Overrides ​

System.GetPhase


GetSettings() ​

ts
GetSettings(): Readonly<Physics2DSettings>;

Returns ​

Readonly<Physics2DSettings>


GetSimulatedEntities() ​

ts
GetSimulatedEntities(out): number[];

Entities with a simulated body — the editor marks them.

Parameters ​

ParameterType
outnumber[]

Returns ​

number[]


IsSimulating() ​

ts
IsSimulating(): boolean;

A world exists — a run with a backend.

Returns ​

boolean


OnBeginContact() ​

ts
OnBeginContact(
   a, 
   b, 
   m
): void;

Can arrive mid-step: record, don't touch the world.

Parameters ​

ParameterType
aIPhysicsFixture2D
bIPhysicsFixture2D
mContact2DManifold

Returns ​

void

Implementation of ​

IContactListener2D.OnBeginContact


OnClose() ​

ts
OnClose(): void;

Returns ​

void

Inherited from ​

System.OnClose


OnEndContact() ​

ts
OnEndContact(a, b): void;

Parameters ​

ParameterType
aIPhysicsFixture2D
bIPhysicsFixture2D

Returns ​

void

Implementation of ​

IContactListener2D.OnEndContact


OnInit() ​

ts
OnInit(_engine): void;

Parameters ​

ParameterType
_engineIEngine

Returns ​

void

Inherited from ​

System.OnInit


OnRender() ​

ts
OnRender(_scene, _renderer): void | Promise<void>;

Parameters ​

ParameterType
_sceneScene
_rendererIRenderer

Returns ​

void | Promise<void>

Inherited from ​

System.OnRender


OnRendererChanged() ​

ts
OnRendererChanged(_renderer): void;

Parameters ​

ParameterType
_rendererIRenderer

Returns ​

void

Inherited from ​

System.OnRendererChanged


OnStart() ​

ts
OnStart(scene, _renderer): void;

Parameters ​

ParameterType
sceneScene
_rendererIRenderer

Returns ​

void

Overrides ​

System.OnStart


OnStop() ​

ts
OnStop(_scene): void;

Parameters ​

ParameterType
_sceneScene

Returns ​

void

Overrides ​

System.OnStop


OnUpdate() ​

ts
OnUpdate(scene, dt): void;

---------- Tick ---------- Timed as Physics for the stats overlay; contact callbacks into scripts count as Scripts.

Parameters ​

ParameterType
sceneScene
dtnumber

Returns ​

void

Overrides ​

System.OnUpdate


OverlapPoint() ​

ts
OverlapPoint(
   x, 
   y, 
   layerMask, 
   all
): Collider2DComponent[];

Parameters ​

ParameterType
xnumber
ynumber
layerMasknumber
allboolean

Returns ​

Collider2DComponent[]


OverlapShape() ​

ts
OverlapShape(
   shape, 
   x, 
   y, 
   angle, 
   layerMask, 
   all
): Collider2DComponent[];

Parameters ​

ParameterType
shapeShape2D
xnumber
ynumber
anglenumber
layerMasknumber
allboolean

Returns ​

Collider2DComponent[]


Override() ​

ts
Override(partial): void;

This run only (Game.physics2D) — ResetOverrides goes back to the project's.

Parameters ​

ParameterType
partialPartial<Physics2DSettings>

Returns ​

void


Raycast() ​

ts
Raycast(
   ox, 
   oy, 
   dx, 
   dy, 
   distance, 
   layerMask
): RaycastHit2D | null;

Parameters ​

ParameterType
oxnumber
oynumber
dxnumber
dynumber
distancenumber
layerMasknumber

Returns ​

RaycastHit2D | null


RaycastAll() ​

ts
RaycastAll(
   ox, 
   oy, 
   dx, 
   dy, 
   distance, 
   layerMask
): RaycastHit2D[];

Parameters ​

ParameterType
oxnumber
oynumber
dxnumber
dynumber
distancenumber
layerMasknumber

Returns ​

RaycastHit2D[]


ResetOverrides() ​

ts
ResetOverrides(): void;

Returns ​

void


SetBackend() ​

ts
SetBackend(backend): void;

---------- Configuration ---------- null switches physics off: bodies are dropped and the components sit idle.

Parameters ​

ParameterType
backend| IPhysics2DBackend | null

Returns ​

void


SetGravity() ​

ts
SetGravity(x, y): void;

Parameters ​

ParameterType
xnumber
ynumber

Returns ​

void


SetLayersCollide() ​

ts
SetLayersCollide(
   a, 
   b, 
   collide
): void;

Parameters ​

ParameterType
anumber
bnumber
collideboolean

Returns ​

void


SetSettings() ​

ts
SetSettings(partial): void;

Parameters ​

ParameterType
partialPartial<Physics2DSettings>

Returns ​

void


Simulate() ​

ts
Simulate(dt): void;

Steps the world by dt seconds now — with autoSimulation off, a script drives physics.

Parameters ​

ParameterType
dtnumber

Returns ​

void


WritePoses() ​

ts
WritePoses(scene, alpha): void;

---------- Pose pass (Physics2DPoseSystem) ---------- Writes each moving body's pose — interpolated by alpha (0..1 between the last two steps) when its Rigidbody2D interpolates — into its entity's world transform.

Parameters ​

ParameterType
sceneScene
alphanumber

Returns ​

void

© 2026 PlayAdGentic