Physics.P2.Body
Class: Phaser.Physics.P2.Body
Constructor
new Body(game, sprite, x, y, mass)
The Physics Body is typically linked to a single Sprite and defines properties that determine how the physics body is simulated.
These properties affect how the body reacts to forces, what forces it generates on itself (to simulate friction), and how it reacts to collisions in the scene.
In most cases, the properties are used to simulate physical effects. Each body also has its own property values that determine exactly how it reacts to forces and collisions in the scene.
By default a single Rectangle shape is added to the Body that matches the dimensions of the parent Sprite. See addShape, removeShape, clearShapes to add extra shapes around the Body.
Note: When bound to a Sprite to avoid single-pixel jitters on mobile devices we strongly recommend using Sprite sizes that are even on both axis, i.e. 128x128 not 127x127.
Note: When a game object is given a P2 body it has its anchor x/y set to 0.5, so it becomes centered.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
game | Phaser.Game | Game reference to the currently running game. | ||
sprite | Phaser.Sprite | <optional> | The Sprite object this physics body belongs to. | |
x | number | <optional> | 0 | The x coordinate of this Body. |
y | number | <optional> | 0 | The y coordinate of this Body. |
mass | number | <optional> | 1 | The default mass of this Body (0 = static). |
- Source code: physics/p2/Body.js (Line 23)
Public Properties
- Source code: physics/p2/Body.js (Line 1498)
- Source code: physics/p2/Body.js (Line 1514)
- Source code: physics/p2/Body.js (Line 1506)
- Source code: physics/p2/Body.js (Line 1603)
- Source code: physics/p2/Body.js (Line 1626)
- Source code: physics/p2/Body.js (Line 1650)
- Source code: physics/p2/Body.js (Line 1671)
- Source code: physics/p2/Body.js (Line 1691)
- Source code: physics/p2/Body.js (Line 112)
- Source code: physics/p2/Body.js (Line 1949)
- Source code: physics/p2/Body.js (Line 1711)
- Internal:
- This member is internal (protected) and may be modified or removed in the future.
- Source code: physics/p2/Body.js (Line 59)
- Source code: physics/p2/Body.js (Line 1920)
- Source code: physics/p2/Body.js (Line 122)
- Source code: physics/p2/Body.js (Line 127)
- Source code: physics/p2/Body.js (Line 1545)
- Source code: physics/p2/Body.js (Line 1732)
- Source code: physics/p2/Body.js (Line 71)
- Source code: physics/p2/Body.js (Line 33)
- Source code: physics/p2/Body.js (Line 76)
- Source code: physics/p2/Body.js (Line 1905)
- Source code: physics/p2/Body.js (Line 1755)
- Source code: physics/p2/Body.js (Line 1574)
- Source code: physics/p2/Body.js (Line 1775)
- Source code: physics/p2/Body.js (Line 1799)
- Source code: physics/p2/Body.js (Line 53)
- Source code: physics/p2/Body.js (Line 92)
- Source code: physics/p2/Body.js (Line 107)
- Source code: physics/p2/Body.js (Line 117)
- Source code: physics/p2/Body.js (Line 1822)
- Source code: physics/p2/Body.js (Line 1845)
- Source code: physics/p2/Body.js (Line 43)
- Source code: physics/p2/Body.js (Line 1516)
- Source code: physics/p2/Body.js (Line 48)
- Source code: physics/p2/Body.js (Line 66)
- Source code: physics/p2/Body.js (Line 38)
- Source code: physics/p2/Body.js (Line 1865)
- Source code: physics/p2/Body.js (Line 1885)
<static> DYNAMIC : number
Dynamic body. Dynamic bodies body can move and respond to collisions and forces.
<static> KINEMATIC : number
Kinematic body. Kinematic bodies only moves according to its .velocity, and does not respond to collisions or force.
<static> STATIC : number
Static body. Static bodies do not move, and they do not respond to forces or collision.
allowSleep : boolean
-
angle : number
The angle of the Body in degrees from its original orientation. Values from 0 to 180 represent clockwise rotation; values from 0 to -180 represent counterclockwise rotation.
Values outside this range are added to or subtracted from 360 to obtain a value within the range. For example, the statement Body.angle = 450 is the same as Body.angle = 90.
If you wish to work in radians instead of degrees use the property Body.rotation instead. Working in radians is faster as it doesn't have to convert values. The angle of this Body in degrees.
angularDamping : number
Damping is specified as a value between 0 and 1, which is the proportion of velocity lost per second. The angular damping acting acting on the body.
angularForce : number
The angular force acting on the body.
angularVelocity : number
The angular velocity of the body.
collidesWith :array
Array of CollisionGroups that this Bodies shapes collide with.
collideWorldBounds : boolean
A Body can be set to collide against the World bounds automatically if this is set to true. Otherwise it will leave the World.
Note that this only applies if your World has bounds! The response to the collision should be managed via CollisionMaterials.
Also note that when you set this it will only effect Body shapes that already exist. If you then add further shapes to your Body
after setting this it will not proactively set them to collide with the bounds. Should the Body collide with the World bounds?
damping : number
Damping is specified as a value between 0 and 1, which is the proportion of velocity lost per second. The linear damping acting on the body in the velocity direction.
<internal> data : p2.Body
The p2 Body data.
debug : boolean
Enable or disable debug drawing of this body
debugBody : Phaser.Physics.P2.BodyDebug
Reference to the debug body.
dirty : boolean
Internally used by Sprite.x/y
dynamic : boolean
Returns true if the Body is dynamic. Setting Body.dynamic to 'false' will make it static.
fixedRotation : boolean
-
force : Phaser.Physics.P2.InversePointProxy
The force applied to the body.
game : Phaser.Game
Local reference to game.
gravity : Phaser.Point
A locally applied gravity force to the Body. Applied directly before the world step. NOTE: Not currently implemented.
[readonly] id : number
The Body ID. Each Body that has been added to the World has a unique ID.
inertia : number
The inertia of the body around the Z axis..
kinematic : boolean
Returns true if the Body is kinematic. Setting Body.kinematic to 'false' will make it static.
mass : number
The mass of the body.
motionState : number
The type of motion this body has. Should be one of: Body.STATIC (the body does not move), Body.DYNAMIC (body can move and respond to collisions) and Body.KINEMATIC (only moves according to its .velocity).
offset : Phaser.Point
The offset of the Physics Body from the Sprite x/y position.
onBeginContact : Phaser.Signal
Dispatched when a first contact is created between shapes in two bodies.
This event is fired during the step, so collision has already taken place.
The event will be sent 5 arguments in this order:
The Phaser.Physics.P2.Body it is in contact with. This might be null if the Body was created directly in the p2 world.
The p2.Body this Body is in contact with.
The Shape from this body that caused the contact.
The Shape from the contact body.
The Contact Equation data array.
onEndContact : Phaser.Signal
Dispatched when contact ends between shapes in two bodies.
This event is fired during the step, so collision has already taken place.
The event will be sent 4 arguments in this order:
The Phaser.Physics.P2.Body it is in contact with. This might be null if the Body was created directly in the p2 world.
The p2.Body this Body has ended contact with.
The Shape from this body that caused the original contact.
The Shape from the contact body.
removeNextStep : boolean
To avoid deleting this body during a physics step, and causing all kinds of problems, set removeNextStep to true to have it removed in the next preUpdate.
rotation : number
The angle of the Body in radians.
If you wish to work in degrees instead of radians use the Body.angle property instead. Working in radians is faster as it doesn't have to convert values. The angle of this Body in radians.
sleepSpeedLimit : number
.
sprite : Phaser.Sprite
Reference to the parent Sprite.
static : boolean
Returns true if the Body is static. Setting Body.static to 'false' will make it dynamic.
type : number
The type of physics system this body belongs to.
velocity : Phaser.Physics.P2.InversePointProxy
The velocity of the body. Set velocity.x to a negative value to move to the left, position to the right. velocity.y negative values move up, positive move down.
world : Phaser.Physics.P2
Local reference to the P2 World.
x : number
The x coordinate of this Body.
y : number
The y coordinate of this Body.
Public Methods
- Source code: physics/p2/Body.js (Line 1108)
- Source code: physics/p2/Body.js (Line 1017)
- Source code: physics/p2/Body.js (Line 1350)
- Source code: physics/p2/Body.js (Line 1088)
- Source code: physics/p2/Body.js (Line 1071)
- Source code: physics/p2/Body.js (Line 1310)
- Source code: physics/p2/Body.js (Line 1054)
- Source code: physics/p2/Body.js (Line 1128)
- Source code: physics/p2/Body.js (Line 1035)
- Source code: physics/p2/Body.js (Line 992)
- Source code: physics/p2/Body.js (Line 904)
- Source code: physics/p2/Body.js (Line 490)
- Source code: physics/p2/Body.js (Line 516)
- Source code: physics/p2/Body.js (Line 561)
- Source code: physics/p2/Body.js (Line 528)
- Source code: physics/p2/Body.js (Line 544)
- Source code: physics/p2/Body.js (Line 323)
- Source code: physics/p2/Body.js (Line 974)
- Source code: physics/p2/Body.js (Line 435)
- Source code: physics/p2/Body.js (Line 180)
- Source code: physics/p2/Body.js (Line 220)
- Source code: physics/p2/Body.js (Line 943)
- Source code: physics/p2/Body.js (Line 247)
- Source code: physics/p2/Body.js (Line 502)
- Source code: physics/p2/Body.js (Line 1422)
- Source code: physics/p2/Body.js (Line 691)
- Source code: physics/p2/Body.js (Line 815)
- Source code: physics/p2/Body.js (Line 674)
- Source code: physics/p2/Body.js (Line 776)
- Source code: physics/p2/Body.js (Line 789)
- Source code: physics/p2/Body.js (Line 802)
- Internal:
- This member is internal (protected) and may be modified or removed in the future.
- Source code: physics/p2/Body.js (Line 846)
- Internal:
- This member is internal (protected) and may be modified or removed in the future.
- Source code: physics/p2/Body.js (Line 828)
- Source code: physics/p2/Body.js (Line 371)
- Source code: physics/p2/Body.js (Line 929)
- Source code: physics/p2/Body.js (Line 1194)
- Source code: physics/p2/Body.js (Line 871)
- Source code: physics/p2/Body.js (Line 759)
- Source code: physics/p2/Body.js (Line 650)
- Source code: physics/p2/Body.js (Line 662)
- Source code: physics/p2/Body.js (Line 1210)
- Source code: physics/p2/Body.js (Line 295)
- Source code: physics/p2/Body.js (Line 1272)
- Source code: physics/p2/Body.js (Line 1228)
- Source code: physics/p2/Body.js (Line 1252)
- Source code: physics/p2/Body.js (Line 612)
- Source code: physics/p2/Body.js (Line 578)
- Source code: physics/p2/Body.js (Line 589)
- Source code: physics/p2/Body.js (Line 600)
- Source code: physics/p2/Body.js (Line 1296)
- Source code: physics/p2/Body.js (Line 708)
- Source code: physics/p2/Body.js (Line 725)
- Source code: physics/p2/Body.js (Line 742)
- Source code: physics/p2/Body.js (Line 624)
- Source code: physics/p2/Body.js (Line 637)
- Source code: physics/p2/Body.js (Line 271)
addCapsule(length, radius, offsetX, offsetY, rotation) → {p2.Capsule}
Adds a Capsule shape to this Body.
You can control the offset from the center of the body and the rotation.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
length | number | The distance between the end points in pixels. | ||
radius | number | Radius of the capsule in pixels. | ||
offsetX | number | <optional> | 0 | Local horizontal offset of the shape relative to the body center of mass. |
offsetY | number | <optional> | 0 | Local vertical offset of the shape relative to the body center of mass. |
rotation | number | <optional> | 0 | Local rotation of the shape relative to the body center of mass, specified in radians. |
Returns
The Capsule shape that was added to the Body.
addCircle(radius, offsetX, offsetY, rotation) → {p2.Circle}
Adds a Circle shape to this Body. You can control the offset from the center of the body and the rotation.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
radius | number | The radius of this circle (in pixels) | ||
offsetX | number | <optional> | 0 | Local horizontal offset of the shape relative to the body center of mass. |
offsetY | number | <optional> | 0 | Local vertical offset of the shape relative to the body center of mass. |
rotation | number | <optional> | 0 | Local rotation of the shape relative to the body center of mass, specified in radians. |
Returns
The Circle shape that was added to the Body.
addFixture(fixtureData) → {array}
Add a polygon fixture. This is used during #loadPolygon.
Parameters
Name | Type | Description |
---|---|---|
fixtureData | string | The data for the fixture. It contains: isSensor, filter (collision) and the actual polygon shapes. |
Returns
An array containing the generated shapes for the given polygon.
addLine(length, offsetX, offsetY, rotation) → {p2.Line}
Adds a Line shape to this Body.
The line shape is along the x direction, and stretches from [-length/2, 0] to [length/2,0].
You can control the offset from the center of the body and the rotation.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
length | number | The length of this line (in pixels) | ||
offsetX | number | <optional> | 0 | Local horizontal offset of the shape relative to the body center of mass. |
offsetY | number | <optional> | 0 | Local vertical offset of the shape relative to the body center of mass. |
rotation | number | <optional> | 0 | Local rotation of the shape relative to the body center of mass, specified in radians. |
Returns
The Line shape that was added to the Body.
addParticle(offsetX, offsetY, rotation) → {p2.Particle}
Adds a Particle shape to this Body. You can control the offset from the center of the body and the rotation.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
offsetX | number | <optional> | 0 | Local horizontal offset of the shape relative to the body center of mass. |
offsetY | number | <optional> | 0 | Local vertical offset of the shape relative to the body center of mass. |
rotation | number | <optional> | 0 | Local rotation of the shape relative to the body center of mass, specified in radians. |
Returns
The Particle shape that was added to the Body.
addPhaserPolygon(key, object) → {Array}
Reads the shape data from a physics data file stored in the Game.Cache and adds it as a polygon to this Body.
The shape data format is based on the output of the
custom phaser exporter for
PhysicsEditor
Parameters
Name | Type | Description |
---|---|---|
key | string | The key of the Physics Data file as stored in Game.Cache. |
object | string | The key of the object within the Physics data file that you wish to load the shape data from. |
Returns
A list of created fixtures to be used with Phaser.Physics.P2.FixtureList
addPlane(offsetX, offsetY, rotation) → {p2.Plane}
Adds a Plane shape to this Body. The plane is facing in the Y direction. You can control the offset from the center of the body and the rotation.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
offsetX | number | <optional> | 0 | Local horizontal offset of the shape relative to the body center of mass. |
offsetY | number | <optional> | 0 | Local vertical offset of the shape relative to the body center of mass. |
rotation | number | <optional> | 0 | Local rotation of the shape relative to the body center of mass, specified in radians. |
Returns
The Plane shape that was added to the Body.
addPolygon(options, points) → {boolean}
Reads a polygon shape path, and assembles convex shapes from that and puts them at proper offset points. The shape must be simple and without holes.
This function expects the x.y values to be given in pixels. If you want to provide them at p2 world scales then call Body.data.fromPolygon directly.
Parameters
Name | Type | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options | object |
An object containing the build options: Properties
| ||||||||||||||||||||
points | Array.<number> | number | An array of 2d vectors that form the convex or concave polygon. |
Returns
True on success, else false.
addRectangle(width, height, offsetX, offsetY, rotation) → {p2.Box}
Adds a Rectangle shape to this Body. You can control the offset from the center of the body and the rotation.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
width | number | The width of the rectangle in pixels. | ||
height | number | The height of the rectangle in pixels. | ||
offsetX | number | <optional> | 0 | Local horizontal offset of the shape relative to the body center of mass. |
offsetY | number | <optional> | 0 | Local vertical offset of the shape relative to the body center of mass. |
rotation | number | <optional> | 0 | Local rotation of the shape relative to the body center of mass, specified in radians. |
Returns
The shape that was added to the Body.
addShape(shape, offsetX, offsetY, rotation) → {p2.Shape}
Add a shape to the body. You can pass a local transform when adding a shape, so that the shape gets an offset and an angle relative to the body center of mass.
Will automatically update the mass properties and bounding radius.
If this Body had a previously set Collision Group you will need to re-apply it to the new Shape this creates.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
shape | p2.Shape | The shape to add to the body. | ||
offsetX | number | <optional> | 0 | Local horizontal offset of the shape relative to the body center of mass. |
offsetY | number | <optional> | 0 | Local vertical offset of the shape relative to the body center of mass. |
rotation | number | <optional> | 0 | Local rotation of the shape relative to the body center of mass, specified in radians. |
Returns
The shape that was added to the body.
addToWorld()
Adds this physics body to the world.
adjustCenterOfMass()
Moves the shape offsets so their center of mass becomes the body center of mass.
applyDamping(dt)
Apply damping, see http://code.google.com/p/bullet/issues/detail?id=74 for details.
Parameters
Name | Type | Description |
---|---|---|
dt | number | Current time step. |
applyForce(force, worldX, worldY)
Apply force to a world point.
This could for example be a point on the RigidBody surface. Applying force
this way will add to Body.force and Body.angularForce.
Parameters
Name | Type | Description |
---|---|---|
force | Float32Array | Array | The force vector to add. |
worldX | number | The world x point to apply the force on. |
worldY | number | The world y point to apply the force on. |
applyImpulse(impulse, worldX, worldY)
Apply impulse to a point relative to the body.
This could for example be a point on the Body surface. An impulse is a force added to a body during a short
period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity.
Parameters
Name | Type | Description |
---|---|---|
impulse | Float32Array | Array | The impulse vector to add, oriented in world space. |
worldX | number | A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be exerted on the center of mass. |
worldY | number | A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be exerted on the center of mass. |
applyImpulseLocal(impulse, localX, localY)
Apply impulse to a point local to the body.
This could for example be a point on the Body surface. An impulse is a force added to a body during a short
period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity.
Parameters
Name | Type | Description |
---|---|---|
impulse | Float32Array | Array | The impulse vector to add, oriented in local space. |
localX | number | A local point on the body. |
localY | number | A local point on the body. |
clearCollision(clearGroup, clearMask, shape)
Clears the collision data from the shapes in this Body. Optionally clears Group and/or Mask.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
clearGroup | boolean | <optional> | true | Clear the collisionGroup value from the shape/s? |
clearMask | boolean | <optional> | true | Clear the collisionMask value from the shape/s? |
shape | p2.Shape | <optional> | An optional Shape. If not provided the collision data will be cleared from all Shapes in this Body. |
clearShapes()
Removes all Shapes from this Body.
collides(group, callback, callbackContext, shape)
Adds the given CollisionGroup, or array of CollisionGroups, to the list of groups that this body will collide with and updates the collision masks.
Parameters
Name | Type | Argument | Description |
---|---|---|---|
group | Phaser.Physics.CollisionGroup | array | The Collision Group or Array of Collision Groups that this Bodies shapes will collide with. | |
callback | function | <optional> | Optional callback that will be triggered when this Body impacts with the given Group. |
callbackContext | object | <optional> | The context under which the callback will be called. |
shape | p2.Shape | <optional> | An optional Shape. If not provided the collision mask will be added to all Shapes in this Body. |
createBodyCallback(object, callback, callbackContext)
Sets a callback to be fired any time a shape in this Body impacts with a shape in the given Body. The impact test is performed against body.id values.
The callback will be sent 4 parameters: This body, the body that impacted, the Shape in this body and the shape in the impacting body.
Note that the impact event happens after collision resolution, so it cannot be used to prevent a collision from happening.
It also happens mid-step. So do not destroy a Body during this callback, instead set safeDestroy to true so it will be killed on the next preUpdate.
Parameters
Name | Type | Description |
---|---|---|
object | Phaser.Sprite | Phaser.TileSprite | Phaser.Physics.P2.Body | p2.Body | The object to send impact events for. |
callback | function | The callback to fire on impact. Set to null to clear a previously set callback. |
callbackContext | object | The context under which the callback will fire. |
createGroupCallback(group, callback, callbackContext)
Sets a callback to be fired any time this Body impacts with the given Group. The impact test is performed against shape.collisionGroup values.
The callback will be sent 4 parameters: This body, the body that impacted, the Shape in this body and the shape in the impacting body.
This callback will only fire if this Body has been assigned a collision group.
Note that the impact event happens after collision resolution, so it cannot be used to prevent a collision from happening.
It also happens mid-step. So do not destroy a Body during this callback, instead set safeDestroy to true so it will be killed on the next preUpdate.
Parameters
Name | Type | Description |
---|---|---|
group | Phaser.Physics.CollisionGroup | The Group to send impact events for. |
callback | function | The callback to fire on impact. Set to null to clear a previously set callback. |
callbackContext | object | The context under which the callback will fire. |
destroy()
Destroys this Body and all references it holds to other objects.
getCollisionMask() → {number}
Gets the collision bitmask from the groups this body collides with.
Returns
The bitmask.
getVelocityAtPoint(result, relativePoint) → {Array}
Gets the velocity of a point in the body.
Parameters
Name | Type | Description |
---|---|---|
result | Array | A vector to store the result in. |
relativePoint | Array | A world oriented vector, indicating the position of the point to get the velocity from. |
Returns
The result vector.
loadPolygon(key, object) → {boolean}
Reads the shape data from a physics data file stored in the Game.Cache and adds it as a polygon to this Body.
As well as reading the data from the Cache you can also pass null
as the first argument and a
physics data object as the second. When doing this you must ensure the structure of the object is correct in advance.
For more details see the format of the Lime / Corona Physics Editor export.
Parameters
Name | Type | Description |
---|---|---|
key | string | The key of the Physics Data file as stored in Game.Cache. Alternatively set to |
object | string | object | The key of the object within the Physics data file that you wish to load the shape data from, |
Returns
True on success, else false.
moveBackward(speed)
Moves the Body backwards based on its current angle and the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should move backwards. |
moveDown(speed)
If this Body is dynamic then this will move it down by setting its y velocity to the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should move down, in pixels per second. |
moveForward(speed)
Moves the Body forwards based on its current angle and the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should move forwards. |
moveLeft(speed)
If this Body is dynamic then this will move it to the left by setting its x velocity to the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should move to the left, in pixels per second. |
moveRight(speed)
If this Body is dynamic then this will move it to the right by setting its x velocity to the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should move to the right, in pixels per second. |
moveUp(speed)
If this Body is dynamic then this will move it up by setting its y velocity to the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should move up, in pixels per second. |
<internal> postUpdate()
Internal method. This is called directly before the sprites are sent to the renderer and after the update function has finished.
<internal> preUpdate()
Internal method. This is called directly before the sprites are sent to the renderer and after the update function has finished.
removeCollisionGroup(group, clearCallback, shape)
Removes the given CollisionGroup, or array of CollisionGroups, from the list of groups that this body will collide with and updates the collision masks.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
group | Phaser.Physics.CollisionGroup | array | The Collision Group or Array of Collision Groups that this Bodies shapes should not collide with anymore. | ||
clearCallback | boolean | <optional> | true | Clear the callback that will be triggered when this Body impacts with the given Group? |
shape | p2.Shape | <optional> | An optional Shape. If not provided the updated collision mask will be added to all Shapes in this Body. |
removeFromWorld()
Removes this physics body from the world.
removeShape(shape) → {boolean}
Remove a shape from the body. Will automatically update the mass properties and bounding radius.
Parameters
Name | Type | Description |
---|---|---|
shape | p2.Circle | p2.Rectangle | p2.Plane | p2.Line | p2.Particle | The shape to remove from the body. |
Returns
True if the shape was found and removed, else false.
reset(x, y, resetDamping, resetMass)
Resets the Body force, velocity (linear and angular) and rotation. Optionally resets damping and mass.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
x | number | The new x position of the Body. | ||
y | number | The new x position of the Body. | ||
resetDamping | boolean | <optional> | false | Resets the linear and angular damping. |
resetMass | boolean | <optional> | false | Sets the Body mass back to 1. |
reverse(speed)
Applies a force to the Body that causes it to 'thrust' backwards (in reverse), based on its current angle and the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should reverse. |
rotateLeft(speed)
This will rotate the Body by the given speed to the left (counter-clockwise).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should rotate. |
rotateRight(speed)
This will rotate the Body by the given speed to the left (clockwise).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should rotate. |
setCircle(radius, offsetX, offsetY, rotation)
Clears any previously set shapes. Then creates a new Circle shape and adds it to this Body.
If this Body had a previously set Collision Group you will need to re-apply it to the new Shape this creates.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
radius | number | The radius of this circle (in pixels) | ||
offsetX | number | <optional> | 0 | Local horizontal offset of the shape relative to the body center of mass. |
offsetY | number | <optional> | 0 | Local vertical offset of the shape relative to the body center of mass. |
rotation | number | <optional> | 0 | Local rotation of the shape relative to the body center of mass, specified in radians. |
setCollisionGroup(group, shape)
Sets the given CollisionGroup to be the collision group for all shapes in this Body, unless a shape is specified.
This also resets the collisionMask.
Parameters
Name | Type | Argument | Description |
---|---|---|---|
group | Phaser.Physics.CollisionGroup | The Collision Group that this Bodies shapes will use. | |
shape | p2.Shape | <optional> | An optional Shape. If not provided the collision group will be added to all Shapes in this Body. |
setMaterial(material, shape)
Adds the given Material to all Shapes that belong to this Body.
If you only wish to apply it to a specific Shape in this Body then provide that as the 2nd parameter.
Parameters
Name | Type | Argument | Description |
---|---|---|---|
material | Phaser.Physics.P2.Material | The Material that will be applied. | |
shape | p2.Shape | <optional> | An optional Shape. If not provided the Material will be added to all Shapes in this Body. |
setRectangle(width, height, offsetX, offsetY, rotation) → {p2.Rectangle}
Clears any previously set shapes. The creates a new Rectangle shape at the given size and offset, and adds it to this Body.
If you wish to create a Rectangle to match the size of a Sprite or Image see Body.setRectangleFromSprite.
If this Body had a previously set Collision Group you will need to re-apply it to the new Shape this creates.
Parameters
Name | Type | Argument | Default | Description |
---|---|---|---|---|
width | number | <optional> | 16 | The width of the rectangle in pixels. |
height | number | <optional> | 16 | The height of the rectangle in pixels. |
offsetX | number | <optional> | 0 | Local horizontal offset of the shape relative to the body center of mass. |
offsetY | number | <optional> | 0 | Local vertical offset of the shape relative to the body center of mass. |
rotation | number | <optional> | 0 | Local rotation of the shape relative to the body center of mass, specified in radians. |
Returns
The Rectangle shape that was added to the Body.
setRectangleFromSprite(sprite) → {p2.Rectangle}
Clears any previously set shapes.
Then creates a Rectangle shape sized to match the dimensions and orientation of the Sprite given.
If no Sprite is given it defaults to using the parent of this Body.
If this Body had a previously set Collision Group you will need to re-apply it to the new Shape this creates.
Parameters
Name | Type | Argument | Description |
---|---|---|---|
sprite | Phaser.Sprite | Phaser.Image | <optional> | The Sprite on which the Rectangle will get its dimensions. |
Returns
The Rectangle shape that was added to the Body.
setZeroDamping()
Sets the Body damping and angularDamping to zero.
setZeroForce()
Sets the force on the body to zero.
setZeroRotation()
If this Body is dynamic then this will zero its angular velocity.
setZeroVelocity()
If this Body is dynamic then this will zero its velocity on both axis.
shapeChanged()
Updates the debug draw if any body shapes change.
thrust(speed)
Applies a force to the Body that causes it to 'thrust' forwards, based on its current angle and the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should thrust. |
thrustLeft(speed)
Applies a force to the Body that causes it to 'thrust' to the left, based on its current angle and the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should move to the left. |
thrustRight(speed)
Applies a force to the Body that causes it to 'thrust' to the right, based on its current angle and the given speed.
The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms).
Parameters
Name | Type | Description |
---|---|---|
speed | number | The speed at which it should move to the right. |
toLocalFrame(out, worldPoint)
Transform a world point to local body frame.
Parameters
Name | Type | Description |
---|---|---|
out | Float32Array | Array | The vector to store the result in. |
worldPoint | Float32Array | Array | The input world vector. |
toWorldFrame(out, localPoint)
Transform a local point to world frame.
Parameters
Name | Type | Description |
---|---|---|
out | Array | The vector to store the result in. |
localPoint | Array | The input local vector. |
updateCollisionMask(shape)
Updates the collisionMask.
Parameters
Name | Type | Argument | Description |
---|---|---|---|
shape | p2.Shape | <optional> | An optional Shape. If not provided the collision group will be added to all Shapes in this Body. |
© 2016 Richard Davey, Photon Storm Ltd.
Licensed under the MIT License.
http://phaser.io/docs/2.6.2/Phaser.Physics.P2.Body.html