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

    The Matter Factory is responsible for quickly creating a variety of different types of bodies, constraints and Game Objects and adding them into the physics world.

    You access the factory from within a Scene using add:

    this.matter.add.rectangle(x, y, width, height);
    

    Use of the Factory is optional. All of the objects it creates can also be created directly via your own code or constructors. It is provided as a means to keep your code concise.

    Index

    Constructors

    Properties

    scene: Scene

    The Scene which this Factory's Matter World belongs to.

    sys: Systems

    A reference to the Scene.Systems this Matter Physics instance belongs to.

    The Matter World which this Factory adds to.

    Methods

    • Creates a composite with simple car setup of bodies and constraints.

      Parameters

      • x: number

        The horizontal position of the car in the world.

      • y: number

        The vertical position of the car in the world.

      • width: number

        The width of the car chasis.

      • height: number

        The height of the car chasis.

      • wheelSize: number

        The radius of the car wheels.

      Returns MatterJS.CompositeType

    • Chains all bodies in the given composite together using constraints.

      Parameters

      • composite: MatterJS.CompositeType

        The composite in which all bodies will be chained together sequentially.

      • xOffsetA: number

        The horizontal offset of the BodyA constraint. This is a percentage based on the body size, not a world position.

      • yOffsetA: number

        The vertical offset of the BodyA constraint. This is a percentage based on the body size, not a world position.

      • xOffsetB: number

        The horizontal offset of the BodyB constraint. This is a percentage based on the body size, not a world position.

      • yOffsetB: number

        The vertical offset of the BodyB constraint. This is a percentage based on the body size, not a world position.

      • Optionaloptions: MatterConstraintConfig

        An optional Constraint configuration object that is used to set initial Constraint properties on creation.

      Returns MatterJS.CompositeType

    • Creates a new rigid circular Body and adds it to the World.

      Parameters

      • x: number

        The X coordinate of the center of the Body.

      • y: number

        The Y coordinate of the center of the Body.

      • radius: number

        The radius of the circle.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      • OptionalmaxSides: number

        The maximum amount of sides to use for the polygon which will approximate this circle.

      Returns MatterJS.BodyType

    • Constraints (or joints) are used for specifying that a fixed distance must be maintained between two bodies, or a body and a fixed world-space position.

      The stiffness of constraints can be modified to create springs or elastic.

      To simulate a revolute constraint (or pin joint) set length: 0 and a high stiffness value (e.g. 0.7 or above).

      If the constraint is unstable, try lowering the stiffness value and / or increasing constraintIterations within the Matter Config.

      For compound bodies, constraints must be applied to the parent body and not one of its parts.

      Parameters

      • bodyA: MatterJS.BodyType

        The first possible Body that this constraint is attached to.

      • bodyB: MatterJS.BodyType

        The second possible Body that this constraint is attached to.

      • Optionallength: number

        A Number that specifies the target resting length of the constraint. If not given it is calculated automatically in Constraint.create from initial positions of the constraint.bodyA and constraint.bodyB.

      • Optionalstiffness: number

        A Number that specifies the stiffness of the constraint, i.e. the rate at which it returns to its resting constraint.length. A value of 1 means the constraint should be very stiff. A value of 0.2 means the constraint acts as a soft spring. Default 1.

      • Optionaloptions: MatterConstraintConfig

        An optional Constraint configuration object that is used to set initial Constraint properties on creation.

      Returns MatterJS.ConstraintType

    • Creates a body using the supplied physics data, as provided by a JSON file.

      The data file should be loaded as JSON:

      preload ()
      {
      this.load.json('ninjas', 'assets/ninjas.json);
      }

      create ()
      {
      const ninjaShapes = this.cache.json.get('ninjas');

      this.matter.add.fromJSON(400, 300, ninjaShapes.shinobi);
      }

      Do not pass the entire JSON file to this method, but instead pass one of the shapes contained within it.

      If you pas in an options object, any settings in there will override those in the config object.

      The structure of the JSON file is as follows:

      {
        'generator_info': // The name of the application that created the JSON data
        'shapeName': {
          'type': // The type of body
          'label': // Optional body label
          'vertices': // An array, or an array of arrays, containing the vertex data in x/y object pairs
        }
      }
      

      At the time of writing, only the Phaser Physics Tracer App exports in this format.

      Parameters

      • x: number

        The X coordinate of the body.

      • y: number

        The Y coordinate of the body.

      • config: any

        The JSON physics data.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      • OptionaladdToWorld: boolean

        Should the newly created body be immediately added to the World? Default true.

      Returns MatterJS.BodyType

    • Creates a body using data exported from the application PhysicsEditor (https://www.codeandweb.com/physicseditor)

      The PhysicsEditor file should be loaded as JSON:

      preload ()
      {
      this.load.json('vehicles', 'assets/vehicles.json);
      }

      create ()
      {
      const vehicleShapes = this.cache.json.get('vehicles');
      this.matter.add.fromPhysicsEditor(400, 300, vehicleShapes.truck);
      }

      Do not pass the entire JSON file to this method, but instead pass one of the shapes contained within it.

      If you pas in an options object, any settings in there will override those in the PhysicsEditor config object.

      Parameters

      • x: number

        The horizontal world location of the body.

      • y: number

        The vertical world location of the body.

      • config: any

        The JSON data exported from PhysicsEditor.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      • OptionaladdToWorld: boolean

        Should the newly created body be immediately added to the World? Default true.

      Returns MatterJS.BodyType

    • Creates a body using the path data from an SVG file.

      SVG Parsing requires the pathseg polyfill from https://github.com/progers/pathseg

      The SVG file should be loaded as XML, as this method requires the ability to extract the path data from it. I.e.:

      preload ()
      {
      this.load.xml('face', 'assets/face.svg);
      }

      create ()
      {
      this.matter.add.fromSVG(400, 300, this.cache.xml.get('face'));
      }

      Parameters

      • x: number

        The X coordinate of the body.

      • y: number

        The Y coordinate of the body.

      • xml: object

        The SVG Path data.

      • Optionalscale: number

        Scale the vertices by this amount after creation. Default 1.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      • OptionaladdToWorld: boolean

        Should the newly created body be immediately added to the World? Default true.

      Returns MatterJS.BodyType

    • Creates a body using the supplied vertices (or an array containing multiple sets of vertices) and adds it to the World. If the vertices are convex, they will pass through as supplied. Otherwise, if the vertices are concave, they will be decomposed. Note that this process is not guaranteed to support complex sets of vertices, e.g. ones with holes.

      Parameters

      • x: number

        The X coordinate of the center of the Body.

      • y: number

        The Y coordinate of the center of the Body.

      • vertexSets: string | any[]

        The vertices data. Either a path string or an array of vertices.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      • OptionalflagInternal: boolean

        Flag internal edges (coincident part edges) Default false.

      • OptionalremoveCollinear: number

        Whether Matter.js will discard collinear edges (to improve performance). Default 0.01.

      • OptionalminimumArea: number

        During decomposition discard parts that have an area less than this. Default 10.

      Returns MatterJS.BodyType

    • Creates a Matter Physics Image Game Object.

      An Image is a light-weight Game Object useful for the display of static images in your game, such as logos, backgrounds, scenery or other non-animated elements. Images can have input events and physics bodies, or be tweened, tinted or scrolled. The main difference between an Image and a Sprite is that you cannot animate an Image as they do not have the Animation component.

      Parameters

      • x: number

        The horizontal position of this Game Object in the world.

      • y: number

        The vertical position of this Game Object in the world.

      • key: string

        The key of the Texture this Game Object will use to render with, as stored in the Texture Manager.

      • Optionalframe: string | number

        An optional frame from the Texture this Game Object is rendering with. Set to null to skip this value.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      Returns Physics.Matter.Image

    • Create a new composite containing Matter Image objects created in a grid arrangement. This function uses the body bounds to prevent overlaps.

      Parameters

      • key: string

        The key of the Texture this Game Object will use to render with, as stored in the Texture Manager.

      • frame: string | number

        An optional frame from the Texture this Game Object is rendering with. Set to null to skip this value.

      • x: number

        The horizontal position of this composite in the world.

      • y: number

        The vertical position of this composite in the world.

      • columns: number

        The number of columns in the grid.

      • rows: number

        The number of rows in the grid.

      • OptionalcolumnGap: number

        The distance between each column. Default 0.

      • OptionalrowGap: number

        The distance between each row. Default 0.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      Returns MatterJS.CompositeType

    • This method is an alias for Factory.constraint.

      Constraints (or joints) are used for specifying that a fixed distance must be maintained between two bodies, or a body and a fixed world-space position.

      The stiffness of constraints can be modified to create springs or elastic.

      To simulate a revolute constraint (or pin joint) set length: 0 and a high stiffness value (e.g. 0.7 or above).

      If the constraint is unstable, try lowering the stiffness value and / or increasing constraintIterations within the Matter Config.

      For compound bodies, constraints must be applied to the parent body and not one of its parts.

      Parameters

      • bodyA: MatterJS.BodyType

        The first possible Body that this constraint is attached to.

      • bodyB: MatterJS.BodyType

        The second possible Body that this constraint is attached to.

      • Optionallength: number

        A Number that specifies the target resting length of the constraint. If not given it is calculated automatically in Constraint.create from initial positions of the constraint.bodyA and constraint.bodyB.

      • Optionalstiffness: number

        A Number that specifies the stiffness of the constraint, i.e. the rate at which it returns to its resting constraint.length. A value of 1 means the constraint should be very stiff. A value of 0.2 means the constraint acts as a soft spring. Default 1.

      • Optionaloptions: MatterConstraintConfig

        An optional Constraint configuration object that is used to set initial Constraint properties on creation.

      Returns MatterJS.ConstraintType

    • This method is an alias for Factory.pointerConstraint.

      A Pointer Constraint is a special type of constraint that allows you to click and drag bodies in a Matter World. It monitors the active Pointers in a Scene, and when one is pressed down it checks to see if that hit any part of any active body in the world. If it did, and the body has input enabled, it will begin to drag it until either released, or you stop it via the stopDrag method.

      You can adjust the stiffness, length and other properties of the constraint via the options object on creation.

      Parameters

      • Optionaloptions: MatterConstraintConfig

        An optional Constraint configuration object that is used to set initial Constraint properties on creation.

      Returns MatterJS.ConstraintType

    • Creates a composite with a Newton's Cradle setup of bodies and constraints.

      Parameters

      • x: number

        The horizontal position of the start of the cradle.

      • y: number

        The vertical position of the start of the cradle.

      • number: number

        The number of balls in the cradle.

      • size: number

        The radius of each ball in the cradle.

      • length: number

        The length of the 'string' the balls hang from.

      Returns MatterJS.CompositeType

    • A Pointer Constraint is a special type of constraint that allows you to click and drag bodies in a Matter World. It monitors the active Pointers in a Scene, and when one is pressed down it checks to see if that hit any part of any active body in the world. If it did, and the body has input enabled, it will begin to drag it until either released, or you stop it via the stopDrag method.

      You can adjust the stiffness, length and other properties of the constraint via the options object on creation.

      Parameters

      • Optionaloptions: MatterConstraintConfig

        An optional Constraint configuration object that is used to set initial Constraint properties on creation.

      Returns MatterJS.ConstraintType

    • Creates a new rigid polygonal Body and adds it to the World.

      Parameters

      • x: number

        The X coordinate of the center of the Body.

      • y: number

        The Y coordinate of the center of the Body.

      • sides: number

        The number of sides the polygon will have.

      • radius: number

        The "radius" of the polygon, i.e. the distance from its center to any vertex. This is also the radius of its circumcircle.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      Returns MatterJS.BodyType

    • Create a new composite containing bodies created in the callback in a pyramid arrangement. This function uses the body bounds to prevent overlaps.

      Parameters

      • x: number

        The horizontal position of this composite in the world.

      • y: number

        The vertical position of this composite in the world.

      • columns: number

        The number of columns in the pyramid.

      • rows: number

        The number of rows in the pyramid.

      • columnGap: number

        The distance between each column.

      • rowGap: number

        The distance between each row.

      • callback: Function

        The callback function to be invoked.

      Returns MatterJS.CompositeType

    • Creates a new rigid rectangular Body and adds it to the World.

      Parameters

      • x: number

        The X coordinate of the center of the Body.

      • y: number

        The Y coordinate of the center of the Body.

      • width: number

        The width of the Body.

      • height: number

        The height of the Body.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      Returns MatterJS.BodyType

    • Creates a simple soft body like object.

      Parameters

      • x: number

        The horizontal position of this composite in the world.

      • y: number

        The vertical position of this composite in the world.

      • columns: number

        The number of columns in the Composite.

      • rows: number

        The number of rows in the Composite.

      • columnGap: number

        The distance between each column.

      • rowGap: number

        The distance between each row.

      • crossBrace: boolean

        true to create cross braces between the bodies, or false to create just straight braces.

      • particleRadius: number

        The radius of this circlular composite.

      • OptionalparticleOptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      • OptionalconstraintOptions: MatterConstraintConfig

        An optional Constraint configuration object that is used to set initial Constraint properties on creation.

      Returns MatterJS.CompositeType

    • This method is an alias for Factory.constraint.

      Constraints (or joints) are used for specifying that a fixed distance must be maintained between two bodies, or a body and a fixed world-space position.

      The stiffness of constraints can be modified to create springs or elastic.

      To simulate a revolute constraint (or pin joint) set length: 0 and a high stiffness value (e.g. 0.7 or above).

      If the constraint is unstable, try lowering the stiffness value and / or increasing constraintIterations within the Matter Config.

      For compound bodies, constraints must be applied to the parent body and not one of its parts.

      Parameters

      • bodyA: MatterJS.BodyType

        The first possible Body that this constraint is attached to.

      • bodyB: MatterJS.BodyType

        The second possible Body that this constraint is attached to.

      • Optionallength: number

        A Number that specifies the target resting length of the constraint. If not given it is calculated automatically in Constraint.create from initial positions of the constraint.bodyA and constraint.bodyB.

      • Optionalstiffness: number

        A Number that specifies the stiffness of the constraint, i.e. the rate at which it returns to its resting constraint.length. A value of 1 means the constraint should be very stiff. A value of 0.2 means the constraint acts as a soft spring. Default 1.

      • Optionaloptions: MatterConstraintConfig

        An optional Constraint configuration object that is used to set initial Constraint properties on creation.

      Returns MatterJS.ConstraintType

    • Creates a Matter Physics Sprite Game Object.

      A Sprite Game Object is used for the display of both static and animated images in your game. Sprites can have input events and physics bodies. They can also be tweened, tinted, scrolled and animated.

      The main difference between a Sprite and an Image Game Object is that you cannot animate Images. As such, Sprites take a fraction longer to process and have a larger API footprint due to the Animation Component. If you do not require animation then you can safely use Images to replace Sprites in all cases.

      Parameters

      • x: number

        The horizontal position of this Game Object in the world.

      • y: number

        The vertical position of this Game Object in the world.

      • key: string

        The key of the Texture this Game Object will use to render with, as stored in the Texture Manager.

      • Optionalframe: string | number

        An optional frame from the Texture this Game Object is rendering with. Set to null to skip this value.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      Returns Physics.Matter.Sprite

    • Create a new composite containing bodies created in the callback in a grid arrangement.

      This function uses the body bounds to prevent overlaps.

      Parameters

      • x: number

        The horizontal position of this composite in the world.

      • y: number

        The vertical position of this composite in the world.

      • columns: number

        The number of columns in the grid.

      • rows: number

        The number of rows in the grid.

      • columnGap: number

        The distance between each column.

      • rowGap: number

        The distance between each row.

      • callback: Function

        The callback that creates the stack.

      Returns MatterJS.CompositeType

    • Creates a wrapper around a Tile that provides access to a corresponding Matter body. A tile can only have one Matter body associated with it. You can either pass in an existing Matter body for the tile or allow the constructor to create the corresponding body for you. If the Tile has a collision group (defined in Tiled), those shapes will be used to create the body. If not, the tile's rectangle bounding box will be used.

      The corresponding body will be accessible on the Tile itself via Tile.physics.matterBody.

      Note: not all Tiled collision shapes are supported. See Phaser.Physics.Matter.TileBody#setFromTileCollision for more information.

      Parameters

      • tile: Tile

        The target tile that should have a Matter body.

      • Optionaloptions: MatterTileOptions

        Options to be used when creating the Matter body.

      Returns TileBody

    • Creates a new rigid trapezoidal Body and adds it to the World.

      Parameters

      • x: number

        The X coordinate of the center of the Body.

      • y: number

        The Y coordinate of the center of the Body.

      • width: number

        The width of the trapezoid Body.

      • height: number

        The height of the trapezoid Body.

      • slope: number

        The slope of the trapezoid. 0 creates a rectangle, while 1 creates a triangle. Positive values make the top side shorter, while negative values make the bottom side shorter.

      • Optionaloptions: MatterBodyConfig

        An optional Body configuration object that is used to set initial Body properties on creation.

      Returns MatterJS.BodyType

    • Constraints (or joints) are used for specifying that a fixed distance must be maintained between two bodies, or a body and a fixed world-space position.

      A world constraint has only one body, you should specify a pointA position in the constraint options parameter to attach the constraint to the world.

      The stiffness of constraints can be modified to create springs or elastic.

      To simulate a revolute constraint (or pin joint) set length: 0 and a high stiffness value (e.g. 0.7 or above).

      If the constraint is unstable, try lowering the stiffness value and / or increasing constraintIterations within the Matter Config.

      For compound bodies, constraints must be applied to the parent body and not one of its parts.

      Parameters

      • body: MatterJS.BodyType

        The Matter Body that this constraint is attached to.

      • Optionallength: number

        A number that specifies the target resting length of the constraint. If not given it is calculated automatically in Constraint.create from initial positions of the constraint.bodyA and constraint.bodyB.

      • Optionalstiffness: number

        A Number that specifies the stiffness of the constraint, i.e. the rate at which it returns to its resting constraint.length. A value of 1 means the constraint should be very stiff. A value of 0.2 means the constraint acts as a soft spring. Default 1.

      • Optionaloptions: MatterConstraintConfig

        An optional Constraint configuration object that is used to set initial Constraint properties on creation.

      Returns MatterJS.ConstraintType