• Public
  • Public/Protected
  • All

The Physics object is the global configuration object for all Excalibur physics.


  • Physics




acc: Vector = ...

Global acceleration that is applied to all vanilla actors that have a active collision type. Global acceleration won't effect labels, ui actors, or triggers in Excalibur.

This is a great way to globally simulate effects like gravity.

bodiesCanSleepByDefault: boolean = false

By default bodies do not sleep

boundsPadding: number = 5

Pad RigidBody BoundingBox by a constant amount

broadphaseStrategy: DynamicAABBTree = BroadphaseStrategy.DynamicAABBTree

Gets or sets the broadphase pair identification strategy.

The default strategy is BroadphaseStrategy.DynamicAABBTree which uses a binary tree of axis-aligned bounding boxes to identify potential collision pairs which is O(nlog(n)) faster.

checkForFastBodies: boolean = true

Enable fast moving body checking, this enables checking for collision pairs via raycast for fast moving objects to prevent bodies from tunneling through one another.

collisionResolutionStrategy: CollisionResolutionStrategy = CollisionResolutionStrategy.Arcade

Gets or sets the global collision resolution strategy (narrowphase).

The default is CollisionResolutionStrategy.Arcade which performs simple axis aligned arcade style physics.

More advanced rigid body physics are enabled by setting CollisionResolutionStrategy.Realistic which allows for complicated simulated physical interactions.

defaultMass: number = 10

The default mass to use if none is specified

disableMinimumSpeedForFastBody: boolean = false

Disable minimum fast moving body raycast, by default if ex.Physics.checkForFastBodies = true Excalibur will only check if the body is moving at least half of its minimum dimension in an update. If ex.Physics.disableMinimumSpeedForFastBody is set to true, Excalibur will always perform the fast body raycast regardless of speed.

dynamicTreeVelocityMultiplier: number = 2

Factor to add to the RigidBody BoundingBox, bounding box (dimensions += vel * dynamicTreeVelocityMultiplier);

enabled: boolean = true

Globally switches all Excalibur physics behavior on or off.

integrator: Euler = Integrator.Euler

Gets or sets the position and velocity positional integrator, currently only Euler is supported.

positionIterations: number = 3

Number of position iterations (overlap) to run in the solver

sleepBias: number = 0.9
sleepEpsilon: number = 0.07
slop: number = 1

Amount of overlap to tolerate in pixels

steeringFactor: number = 0.2

Amount of positional overlap correction to apply each position iteration of the solver O - meaning no correction, 1 - meaning correct all overlap

surfaceEpsilon: number = 0.1

Surface epsilon is used to help deal with surface penetration

velocityIterations: number = 8

Number of velocity iteration (response) to run in the solver

wakeThreshold: number = ...
warmStart: boolean = true

Warm start set to true re-uses impulses from previous frames back in the solver


  • get dynamicTreeVelocityMultiplyer(): number
  • set dynamicTreeVelocityMultiplyer(value: number): void


  • useArcadePhysics(): void
  • Configures Excalibur to use "arcade" physics. Arcade physics which performs simple axis aligned arcade style physics.

    Returns void

  • useRealisticPhysics(): void
  • Configures Excalibur to use rigid body physics. Rigid body physics allows for complicated simulated physical interactions.

    Returns void