PhysicsManager Class
Module: cc
Physics manager uses box2d as the inner physics system, and hide most box2d implement details(creating rigidbody, synchronize rigidbody info to node). You can visit some common box2d function through physics manager(hit testing, raycast, debug info). Physics manager distributes the collision information to each collision callback when collision is produced. Note: You need first enable the collision listener in the rigidbody.
Index
Properties
DrawBitsDrawBitsThe draw bits for drawing physics debug information.PTM_RATIONumberThe ratio transform between physics unit and pixel unit, generally is 32.VELOCITY_ITERATIONSNumberThe velocity iterations for the velocity constraint solver.POSITION_ITERATIONSNumberThe position Iterations for the position constraint solver.FIXED_TIME_STEPNumberSpecify the fixed time step. Need enabledAccumulator to make it work.MAX_ACCUMULATORNumberSpecify the max accumulator time. Need enabledAccumulator to make it work.enabledAccumulatorBooleanIf enabled accumulator, then will call step function with the fixed time step FIXED_TIME_STEP. And if the update dt is bigger than the time step, then will call step function several times. If disabled accumulator, then will call step function with a time step calculated with the frame rate.enabledBooleanEnabled the physics manager?debugDrawFlagsNumberDebug draw flags.gravityVec2The physics world gravity.
Methods
testPointTest which collider contains the given world pointtestAABBTest which colliders intersect the given world rectrayCastRaycast the world for all colliders in the path of the ray. The raycast ignores colliders that contain the starting point.attachDebugDrawToCameraAttach physics debug draw to cameradetachDebugDrawFromCameraDetach physics debug draw to cameraonRegister an callback of a specific event type on the EventTarget.offRemoves the listeners previously registered with the same type, callback, target and or useCapture, if only type is passed as parameter, all listeners registered with that type will be removed.targetOffRemoves all callbacks previously registered with the same target (passed as parameter). This is not for removing all listeners in the current event target, and this is not for removing all listeners the target parameter have registered. It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter.onceRegister an callback of a specific event type on the EventTarget, the callback will remove itself after the first time it is triggered.dispatchEventDispatches an event into the event flow. The event target is the EventTarget object upon which the dispatchEvent() method is called.emitSend an event to this object directly, this method will not propagate the event to any other objects. The event will be created from the supplied message, you can get the "detail" argument from event.detail.
Details
Properties
DrawBits
The draw bits for drawing physics debug information.
| meta | description |
|---|---|
| Type | DrawBits |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:59 |
Examples
cc.director.getPhysicsManager().debugDrawFlags =
// cc.PhysicsManager.DrawBits.e_aabbBit |
// cc.PhysicsManager.DrawBits.e_pairBit |
// cc.PhysicsManager.DrawBits.e_centerOfMassBit |
cc.PhysicsManager.DrawBits.e_jointBit |
cc.PhysicsManager.DrawBits.e_shapeBit;
PTM_RATIO
The ratio transform between physics unit and pixel unit, generally is 32.
| meta | description |
|---|---|
| Type | Number |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:77 |
VELOCITY_ITERATIONS
The velocity iterations for the velocity constraint solver.
| meta | description |
|---|---|
| Type | Number |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:87 |
POSITION_ITERATIONS
The position Iterations for the position constraint solver.
| meta | description |
|---|---|
| Type | Number |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:98 |
FIXED_TIME_STEP
Specify the fixed time step. Need enabledAccumulator to make it work.
| meta | description |
|---|---|
| Type | Number |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:109 |
MAX_ACCUMULATOR
Specify the max accumulator time. Need enabledAccumulator to make it work.
| meta | description |
|---|---|
| Type | Number |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:121 |
enabledAccumulator
If enabled accumulator, then will call step function with the fixed time step FIXED_TIME_STEP. And if the update dt is bigger than the time step, then will call step function several times. If disabled accumulator, then will call step function with a time step calculated with the frame rate.
| meta | description |
|---|---|
| Type | Boolean |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:151 |
enabled
Enabled the physics manager?
| meta | description |
|---|---|
| Type | Boolean |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:529 |
debugDrawFlags
Debug draw flags.
| meta | description |
|---|---|
| Type | Number |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:556 |
Examples
// enable all debug draw info
var Bits = cc.PhysicsManager.DrawBits;
cc.director.getPhysicsManager().debugDrawFlags = Bits.e_aabbBit |
Bits.e_pairBit |
Bits.e_centerOfMassBit |
Bits.e_jointBit |
Bits.e_shapeBit;
// disable debug draw info
cc.director.getPhysicsManager().debugDrawFlags = 0;
gravity
The physics world gravity.
| meta | description |
|---|---|
| Type | Vec2 |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:604 |
Methods
testPoint
Test which collider contains the given world point
| meta | description |
|---|---|
| Returns | PhysicsCollider |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:226 |
Parameters
pointVec2 the world point
testAABB
Test which colliders intersect the given world rect
| meta | description |
|---|---|
| Returns | [PhysicsCollider] |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:257 |
Parameters
rectRect the world rect
rayCast
Raycast the world for all colliders in the path of the ray. The raycast ignores colliders that contain the starting point.
| meta | description |
|---|---|
| Returns | [PhysicsRayCastResult] |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:284 |
Parameters
p1Vec2 start point of the raycastp2Vec2 end point of the raycasttypeRayCastType optional, default is RayCastType.Closest
attachDebugDrawToCamera
Attach physics debug draw to camera
| meta | description |
|---|---|
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:369 |
Parameters
cameraCamera
detachDebugDrawFromCamera
Detach physics debug draw to camera
| meta | description |
|---|---|
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCPhysicsManager.js:381 |
Parameters
cameraCamera
on
Register an callback of a specific event type on the EventTarget.
| meta | description |
|---|---|
| Returns | Function |
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/event/event-target.js:217 |
Parameters
typeString A string representing the event type to listen for.callbackFunction The callback that will be invoked when the event is dispatched.The callback is ignored if it is a duplicate (the callbacks are unique).eventEvent event
targetObject The target (this object) to invoke the callback, can be nulluseCaptureBoolean When set to true, the capture argument prevents callbackfrom being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false, callback will NOT be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked when event's eventPhase attribute value is AT_TARGET.
Examples
node.on(cc.Node.EventType.TOUCH_END, function (event) {
cc.log("this is callback");
}, node);
off
Removes the listeners previously registered with the same type, callback, target and or useCapture, if only type is passed as parameter, all listeners registered with that type will be removed.
| meta | description |
|---|---|
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/event/event-target.js:274 |
Parameters
typeString A string representing the event type being removed.callbackFunction The callback to remove.targetObject The target (this object) to invoke the callback, if it's not given, only callback without target will be removeduseCaptureBoolean Specifies whether the callback being removed was registered as a capturing callback or not.If not specified, useCapture defaults to false. If a callback was registered twice, one with capture and one without, each must be removed separately. Removal of a capturing callback does not affect a non-capturing version of the same listener, and vice versa.
Examples
// register touchEnd eventListener
var touchEnd = node.on(cc.Node.EventType.TOUCH_END, function (event) {
cc.log("this is callback");
}, node);
// remove touch end event listener
node.off(cc.Node.EventType.TOUCH_END, touchEnd, node);
// remove all touch end event listeners
node.off(cc.Node.EventType.TOUCH_END);
targetOff
Removes all callbacks previously registered with the same target (passed as parameter). This is not for removing all listeners in the current event target, and this is not for removing all listeners the target parameter have registered. It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter.
| meta | description |
|---|---|
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/event/event-target.js:329 |
Parameters
targetObject The target to be searched for all related listeners
once
Register an callback of a specific event type on the EventTarget, the callback will remove itself after the first time it is triggered.
| meta | description |
|---|---|
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/event/event-target.js:351 |
Parameters
typeString A string representing the event type to listen for.callbackFunction The callback that will be invoked when the event is dispatched.The callback is ignored if it is a duplicate (the callbacks are unique).eventEvent event
targetObject The target (this object) to invoke the callback, can be nulluseCaptureBoolean When set to true, the capture argument prevents callbackfrom being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false, callback will NOT be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked when event's eventPhase attribute value is AT_TARGET.
Examples
node.once(cc.Node.EventType.TOUCH_END, function (event) {
cc.log("this is callback");
}, node);
dispatchEvent
Dispatches an event into the event flow. The event target is the EventTarget object upon which the dispatchEvent() method is called.
| meta | description |
|---|---|
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/event/event-target.js:396 |
Parameters
eventEvent The Event object that is dispatched into the event flow
emit
Send an event to this object directly, this method will not propagate the event to any other objects. The event will be created from the supplied message, you can get the "detail" argument from event.detail.
| meta | description |
|---|---|
| Defined in | https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/event/event-target.js:410 |
Parameters
messageString the message to senddetailAny whatever argument the message needs