phaser - v4.0.0-rc.4
    Preparing search index...

    The Arcade Physics World.

    The World is responsible for creating, managing, colliding and updating all of the bodies within it.

    An instance of the World belongs to a Phaser.Scene and is accessed via the property physics.world.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    bodies: Set<Physics.Arcade.Body>

    Dynamic Bodies in this simulation.

    bounds: Geom.Rectangle

    A boundary constraining Bodies.

    checkCollision: CheckCollisionObject

    The boundary edges that Bodies can collide with.

    This simulation's collision processors.

    debugGraphic: GameObjects.Graphics

    The graphics object drawing the debug display.

    Default debug display settings for new Bodies.

    drawDebug: boolean

    Enables the debug display.

    fixedStep: boolean

    Should Physics use a fixed update time-step (true) or sync to the render fps (false)?. False value of this property disables fps and timeScale properties.

    forceX: boolean

    Always separate overlapping Bodies horizontally before vertically. False (the default) means Bodies are first separated on the axis of greater gravity, or the vertical axis if neither is greater.

    fps: number

    The number of physics steps to be taken per second.

    This property is read-only. Use the setFPS method to modify it at run-time.

    gravity: Math.Vector2

    Acceleration of Bodies due to gravity, in pixels per second.

    isPaused: boolean

    Whether the simulation advances with the game loop.

    maxEntries: number

    The maximum number of items per node on the RTree.

    This is ignored if useTree is false. If you have a large number of bodies in your world then you may find search performance improves by increasing this value, to allow more items per node and less node division.

    OVERLAP_BIAS: number

    The maximum absolute difference of a Body's per-step velocity and its overlap with another Body that will result in separation on each axis. Larger values favor separation. Smaller values favor no separation.

    pendingDestroy: Set<Physics.Arcade.Body | StaticBody>

    Static Bodies marked for deletion.

    scene: Scene

    The Scene this simulation belongs to.

    staticBodies: Set<StaticBody>

    Static Bodies in this simulation.

    staticTree: RTree

    The spatial index of Static Bodies.

    stepsLastFrame: number

    The number of steps that took place in the last frame.

    TILE_BIAS: number

    The maximum absolute value of a Body's overlap with a tile that will result in separation on each axis. Larger values favor separation. Smaller values favor no separation. The optimum value may be similar to the tile size.

    tileFilterOptions: FilteringOptions

    The Filtering Options passed to GetTilesWithinWorldXY as part of the collideSpriteVsTilemapLayer check.

    timeScale: number

    Scaling factor applied to the frame rate.

    • 1.0 = normal speed
    • 2.0 = half speed
    • 0.5 = double speed
    tree: RTree

    The spatial index of Dynamic Bodies.

    Recycled input for tree searches.

    useTree: boolean

    Should this Arcade Physics World use an RTree for Dynamic bodies?

    An RTree is a fast way of spatially sorting of all the bodies in the world. However, at certain limits, the cost of clearing and inserting the bodies into the tree every frame becomes more expensive than the search speed gains it provides.

    If you have a large number of dynamic bodies in your world then it may be best to disable the use of the RTree by setting this property to false in the physics config.

    The number it can cope with depends on browser and device, but a conservative estimate of around 5,000 bodies should be considered the max before disabling it.

    This only applies to dynamic bodies. Static bodies are always kept in an RTree, because they don't have to be cleared every frame, so you benefit from the massive search speeds all the time.

    Methods

    • Creates a new Collider object and adds it to the simulation.

      A Collider is a way to automatically perform collision checks between two objects, calling the collide and process callbacks if they occur.

      Colliders are run as part of the World update, after all of the Bodies have updated.

      By creating a Collider you don't need then call World.collide in your update loop, as it will be handled for you automatically.

      Parameters

      • object1: ArcadeColliderType

        The first object to check for collision.

      • object2: ArcadeColliderType

        The second object to check for collision.

      • OptionalcollideCallback: ArcadePhysicsCallback

        The callback to invoke when the two objects collide.

      • OptionalprocessCallback: ArcadePhysicsCallback

        The callback to invoke when the two objects collide. Must return a boolean.

      • OptionalcallbackContext: any

        The scope in which to call the callbacks.

      Returns Collider

    • Add a listener for a given event.

      Parameters

      • event: string | symbol

        The event name.

      • fn: Function

        The listener function.

      • Optionalcontext: any

        The context to invoke the listener with. Default this.

      Returns this

    • Creates a new Overlap Collider object and adds it to the simulation.

      A Collider is a way to automatically perform overlap checks between two objects, calling the collide and process callbacks if they occur.

      Colliders are run as part of the World update, after all of the Bodies have updated.

      By creating a Collider you don't need then call World.overlap in your update loop, as it will be handled for you automatically.

      Parameters

      • object1: ArcadeColliderType

        The first object to check for overlap.

      • object2: ArcadeColliderType

        The second object to check for overlap.

      • OptionalcollideCallback: ArcadePhysicsCallback

        The callback to invoke when the two objects overlap.

      • OptionalprocessCallback: ArcadePhysicsCallback

        The callback to invoke when the two objects overlap. Must return a boolean.

      • OptionalcallbackContext: any

        The scope in which to call the callbacks.

      Returns Collider

    • Performs a collision check and separation between the two physics enabled objects given, which can be single Game Objects, arrays of Game Objects, Physics Groups, arrays of Physics Groups or normal Groups.

      If you don't require separation then use Phaser.Physics.Arcade.World#overlap instead.

      If two Groups or arrays are passed, each member of one will be tested against each member of the other.

      If only one Group is passed (as object1), each member of the Group will be collided against the other members.

      If only one Array is passed, the array is iterated and every element in it is tested against the others.

      Two callbacks can be provided; they receive the colliding game objects as arguments. If an overlap is detected, the processCallback is called first. It can cancel the collision by returning false. Next the objects are separated and collideCallback is invoked.

      Arcade Physics uses the Projection Method of collision resolution and separation. While it's fast and suitable for 'arcade' style games it lacks stability when multiple objects are in close proximity or resting upon each other. The separation that stops two objects penetrating may create a new penetration against a different object. If you require a high level of stability please consider using an alternative physics system, such as Matter.js.

      Parameters

      • object1: ArcadeColliderType

        The first object or array of objects to check.

      • Optionalobject2: ArcadeColliderType

        The second object or array of objects to check, or undefined.

      • OptionalcollideCallback: ArcadePhysicsCallback

        An optional callback function that is called if the objects collide.

      • OptionalprocessCallback: ArcadePhysicsCallback

        An optional callback function that lets you perform additional checks against the two objects if they collide. If this is set then collideCallback will only be called if this callback returns true.

      • OptionalcallbackContext: any

        The context in which to run the callbacks.

      Returns boolean

    • Internal handler for Sprite vs. Tilemap collisions. Please use Phaser.Physics.Arcade.World#collide instead.

      Parameters

      • sprite: GameObject

        The first object to check for collision.

      • tilemapLayer: TilemapLayer

        The second object to check for collision.

      • OptionalcollideCallback: ArcadePhysicsCallback

        An optional callback function that is called if the objects collide.

      • OptionalprocessCallback: ArcadePhysicsCallback

        An optional callback function that lets you perform additional checks against the two objects if they collide. If this is set then collideCallback will only be called if this callback returns true.

      • OptionalcallbackContext: any

        The context in which to run the callbacks.

      • OptionaloverlapOnly: boolean

        Whether this is a collision or overlap check.

      Returns boolean

    • This advanced method is specifically for testing for collision between a single Sprite and an array of Tile objects.

      You should generally use the collide method instead, with a Sprite vs. a Tilemap Layer, as that will perform tile filtering and culling for you, as well as handle the interesting face collision automatically.

      This method is offered for those who would like to check for collision with specific Tiles in a layer, without having to set any collision attributes on the tiles in question. This allows you to perform quick dynamic collisions on small sets of Tiles. As such, no culling or checks are made to the array of Tiles given to this method, you should filter them before passing them to this method.

      Important: Use of this method skips the interesting faces system that Tilemap Layers use. This means if you have say a row or column of tiles, and you jump into, or walk over them, it's possible to get stuck on the edges of the tiles as the interesting face calculations are skipped. However, for quick-fire small collision set tests on dynamic maps, this method can prove very useful.

      This method does not factor in the Collision Mask or Category.

      Parameters

      • sprite: GameObject

        The first object to check for collision.

      • tiles: Tile[]

        An array of Tiles to check for collision against.

      • OptionalcollideCallback: ArcadePhysicsCallback

        An optional callback function that is called if the objects collide.

      • OptionalprocessCallback: ArcadePhysicsCallback

        An optional callback function that lets you perform additional checks against the two objects if they collide. If this is set then collideCallback will only be called if this callback returns true.

      • OptionalcallbackContext: any

        The context in which to run the callbacks.

      Returns boolean

    • Calculates a Body's angular velocity.

      Parameters

      • body: Physics.Arcade.Body

        The Body to compute the velocity for.

      • delta: number

        The delta value to be used in the calculation, in seconds.

      Returns void

    • Calculates a Body's per-axis velocity.

      Parameters

      • body: Physics.Arcade.Body

        The Body to compute the velocity for.

      • delta: number

        The delta value to be used in the calculation, in seconds.

      Returns void

    • Creates a Graphics Game Object that the world will use to render the debug display to.

      This is called automatically when the World is instantiated if the debug config property was set to true. However, you can call it at any point should you need to display the debug Graphic from a fixed point.

      You can control which objects are drawn to the Graphics object, and the colors they use, by setting the debug properties in the physics config.

      You should not typically use this in a production game. Use it to aid during debugging.

      Returns GameObjects.Graphics

    • Disables the Arcade Physics Body of a Game Object, an array of Game Objects, or the children of a Group.

      The difference between this and the disableBody method is that you can pass arrays or Groups to this method.

      The body itself is not deleted, it just has its enable property set to false, which means you can re-enable it again at any point by passing it to enable World.enable or World.add.

      Parameters

      Returns void

    • Disables an existing Arcade Physics Body or StaticBody and removes it from the simulation.

      The body is disabled and removed from the local search trees.

      The body itself is not deleted, it just has its enable property set to false, which means you can re-enable it again at any point by passing it to enable World.enable or World.add.

      Parameters

      Returns void

    • Calls each of the listeners registered for a given event.

      Parameters

      • event: string | symbol

        The event name.

      • ...args: any[]

        Additional arguments that will be passed to the event handler.

      Returns boolean

    • Adds an Arcade Physics Body to a Game Object, an array of Game Objects, or the children of a Group.

      The difference between this and the enableBody method is that you can pass arrays or Groups to this method.

      You can specify if the bodies are to be Dynamic or Static. A dynamic body can move via velocity and acceleration. A static body remains fixed in place and as such is able to use an optimized search tree, making it ideal for static elements such as level objects. You can still collide and overlap with static bodies.

      Normally, rather than calling this method directly, you'd use the helper methods available in the Arcade Physics Factory, such as:

      this.physics.add.image(x, y, textureKey);
      this.physics.add.sprite(x, y, textureKey);

      Calling factory methods encapsulates the creation of a Game Object and the creation of its body at the same time. If you are creating custom classes then you can pass them to this method to have their bodies created.

      Parameters

      Returns void

    • Creates an Arcade Physics Body on a single Game Object.

      If the Game Object already has a body, this method will simply add it back into the simulation.

      You can specify if the body is Dynamic or Static. A dynamic body can move via velocity and acceleration. A static body remains fixed in place and as such is able to use an optimized search tree, making it ideal for static elements such as level objects. You can still collide and overlap with static bodies.

      Normally, rather than calling this method directly, you'd use the helper methods available in the Arcade Physics Factory, such as:

      this.physics.add.image(x, y, textureKey);
      this.physics.add.sprite(x, y, textureKey);

      Calling factory methods encapsulates the creation of a Game Object and the creation of its body at the same time. If you are creating custom classes then you can pass them to this method to have their bodies created.

      Parameters

      • object: GameObject

        The Game Object on which to create the body.

      • OptionalbodyType: number

        The type of Body to create. Either DYNAMIC_BODY or STATIC_BODY.

      Returns GameObject

    • Return the number of listeners listening to a given event.

      Parameters

      • event: string | symbol

        The event name.

      Returns number

    • Return the listeners registered for a given event.

      Parameters

      • event: string | symbol

        The event name.

      Returns Function[]

    • Remove the listeners of a given event.

      Parameters

      • event: string | symbol

        The event name.

      • Optionalfn: Function

        Only remove the listeners that match this function.

      • Optionalcontext: any

        Only remove the listeners that have this context.

      • Optionalonce: boolean

        Only remove one-time listeners.

      Returns this

    • Add a listener for a given event.

      Parameters

      • event: string | symbol

        The event name.

      • fn: Function

        The listener function.

      • Optionalcontext: any

        The context to invoke the listener with. Default this.

      Returns this

    • Add a one-time listener for a given event.

      Parameters

      • event: string | symbol

        The event name.

      • fn: Function

        The listener function.

      • Optionalcontext: any

        The context to invoke the listener with. Default this.

      Returns this

    • This advanced method is specifically for testing for overlaps between a single Sprite and an array of Tile objects.

      You should generally use the overlap method instead, with a Sprite vs. a Tilemap Layer, as that will perform tile filtering and culling for you, as well as handle the interesting face collision automatically.

      This method is offered for those who would like to check for overlaps with specific Tiles in a layer, without having to set any collision attributes on the tiles in question. This allows you to perform quick dynamic overlap tests on small sets of Tiles. As such, no culling or checks are made to the array of Tiles given to this method, you should filter them before passing them to this method.

      This method does not factor in the Collision Mask or Category.

      Parameters

      • sprite: GameObject

        The first object to check for collision.

      • tiles: Tile[]

        An array of Tiles to check for collision against.

      • OptionaloverlapCallback: ArcadePhysicsCallback

        An optional callback function that is called if the objects overlap.

      • OptionalprocessCallback: ArcadePhysicsCallback

        An optional callback function that lets you perform additional checks against the two objects if they collide. If this is set then overlapCallback will only be called if this callback returns true.

      • OptionalcallbackContext: any

        The context in which to run the callbacks.

      Returns boolean

    • Pauses the simulation.

      A paused simulation does not update any existing bodies, or run any Colliders.

      However, you can still enable and disable bodies within it, or manually run collide or overlap checks.

      Returns Physics.Arcade.World

    • Updates bodies, draws the debug display, and handles pending queue operations.

      Returns void

    • Removes an existing Arcade Physics Body or StaticBody from the simulation.

      The body is disabled and removed from the local search trees.

      The body itself is not deleted, it just has its enabled property set to false, which means you can re-enable it again at any point by passing it to enable enable or add.

      Parameters

      Returns void

    • Removes a Collider from the simulation so it is no longer processed.

      This method does not destroy the Collider. If you wish to add it back at a later stage you can call World.colliders.add(Collider).

      If you no longer need the Collider you can call the Collider.destroy method instead, which will automatically clear all of its references and then remove it from the World. If you call destroy on a Collider you don't need to pass it to this method too.

      Parameters

      • collider: Collider

        The Collider to remove from the simulation.

      Returns Physics.Arcade.World

    • Remove the listeners of a given event.

      Parameters

      • event: string | symbol

        The event name.

      • Optionalfn: Function

        Only remove the listeners that match this function.

      • Optionalcontext: any

        Only remove the listeners that have this context.

      • Optionalonce: boolean

        Only remove one-time listeners.

      Returns this

    • Sets the position, size and properties of the World boundary.

      The World boundary is an invisible rectangle that defines the edges of the World. If a Body is set to collide with the world bounds then it will automatically stop when it reaches any of the edges. You can optionally set which edges of the boundary should be checked against.

      Parameters

      • x: number

        The top-left x coordinate of the boundary.

      • y: number

        The top-left y coordinate of the boundary.

      • width: number

        The width of the boundary.

      • height: number

        The height of the boundary.

      • OptionalcheckLeft: boolean

        Should bodies check against the left edge of the boundary?

      • OptionalcheckRight: boolean

        Should bodies check against the right edge of the boundary?

      • OptionalcheckUp: boolean

        Should bodies check against the top edge of the boundary?

      • OptionalcheckDown: boolean

        Should bodies check against the bottom edge of the boundary?

      Returns Physics.Arcade.World

    • Enables or disables collisions on each edge of the World boundary.

      Parameters

      • Optionalleft: boolean

        Should bodies check against the left edge of the boundary? Default true.

      • Optionalright: boolean

        Should bodies check against the right edge of the boundary? Default true.

      • Optionalup: boolean

        Should bodies check against the top edge of the boundary? Default true.

      • Optionaldown: boolean

        Should bodies check against the bottom edge of the boundary? Default true.

      Returns Physics.Arcade.World

    • Sets the frame rate to run the simulation at.

      The frame rate value is used to simulate a fixed update time step. This fixed time step allows for a straightforward implementation of a deterministic game state.

      This frame rate is independent of the frequency at which the game is rendering. The higher you set the fps, the more physics simulation steps will occur per game step. Conversely, the lower you set it, the less will take place.

      You can optionally advance the simulation directly yourself by calling the step method.

      Parameters

      • framerate: number

        The frame rate to advance the simulation at.

      Returns this

    • Advances the simulation by a time increment.

      Parameters

      • delta: number

        The delta time amount, in seconds, by which to advance the simulation.

      Returns void

    • Advances the simulation based on the elapsed time and fps rate.

      This is called automatically by your Scene and does not need to be invoked directly.

      Parameters

      • time: number

        The current timestamp as generated by the Request Animation Frame or SetTimeout.

      • delta: number

        The delta time, in ms, elapsed since the last frame.

      Returns void

    • Calculates a Body's velocity and updates its position.

      Parameters

      • body: Physics.Arcade.Body

        The Body to be updated.

      • delta: number

        The delta value to be used in the motion calculations, in seconds.

      Returns void

    • Wrap an object's coordinates (or several objects' coordinates) within Phaser.Physics.Arcade.World#bounds.

      If the object is outside any boundary edge (left, top, right, bottom), it will be moved to the same offset from the opposite edge (the interior).

      Parameters

      • object: any

        A Game Object, a Group, an object with x and y coordinates, or an array of such objects.

      • Optionalpadding: number

        An amount added to each boundary edge during the operation. Default 0.

      Returns void

    • Wrap each object's coordinates within Phaser.Physics.Arcade.World#bounds.

      Parameters

      • objects: any[]

        An array of objects to be wrapped.

      • Optionalpadding: number

        An amount added to the boundary. Default 0.

      Returns void

    • Wrap an object's coordinates within Phaser.Physics.Arcade.World#bounds.

      Parameters

      • object: any

        A Game Object, a Physics Body, or any object with x and y coordinates

      • Optionalpadding: number

        An amount added to the boundary. Default 0.

      Returns void