UNPKG

planck

Version:

2D JavaScript/TypeScript physics engine for cross-platform HTML5 game development

444 lines (225 loc) 7.23 kB
# Class: PulleyJoint The pulley joint is connected to two bodies and two fixed ground points. The pulley supports a ratio such that: length1 + ratio * length2 <= constant Yes, the force transmitted is scaled by the ratio. Warning: the pulley joint can get a bit squirrelly by itself. They often work better when combined with prismatic joints. You should also cover the the anchor points with static shapes to prevent one side from going to zero length. ## Extends - [`Joint`](/api/classes/Joint) ## Constructors ### new PulleyJoint() > **new PulleyJoint**(`def`): [`PulleyJoint`](/api/classes/PulleyJoint) #### Parameters • **def**: [`PulleyJointDef`](/api/interfaces/PulleyJointDef) #### Returns [`PulleyJoint`](/api/classes/PulleyJoint) #### Overrides [`Joint`](/api/classes/Joint).[`constructor`](/api/classes/Joint#constructors) ### new PulleyJoint() > **new PulleyJoint**(`def`, `bodyA`, `bodyB`, `groundA`?, `groundB`?, `anchorA`?, `anchorB`?, `ratio`?): [`PulleyJoint`](/api/classes/PulleyJoint) #### Parameters • **def**: [`PulleyJointOpt`](/api/interfaces/PulleyJointOpt) • **bodyA**: [`Body`](/api/classes/Body) • **bodyB**: [`Body`](/api/classes/Body) • **groundA?**: [`Vec2Value`](/api/interfaces/Vec2Value) • **groundB?**: [`Vec2Value`](/api/interfaces/Vec2Value) • **anchorA?**: [`Vec2Value`](/api/interfaces/Vec2Value) • **anchorB?**: [`Vec2Value`](/api/interfaces/Vec2Value) • **ratio?**: `number` #### Returns [`PulleyJoint`](/api/classes/PulleyJoint) #### Overrides [`Joint`](/api/classes/Joint).[`constructor`](/api/classes/Joint#constructors) ## Properties ### style > **style**: [`Style`](/api/interfaces/Style) = `{}` Styling for dev-tools. #### Inherited from [`Joint`](/api/classes/Joint).[`style`](/api/classes/Joint#style) *** ### TYPE > `static` **TYPE**: `"pulley-joint"` ## Methods ### getAnchorA() > **getAnchorA**(): [`Vec2`](/api/classes/Vec2) Get the anchor point on bodyA in world coordinates. #### Returns [`Vec2`](/api/classes/Vec2) #### Overrides [`Joint`](/api/classes/Joint).[`getAnchorA`](/api/classes/Joint#getanchora) *** ### getAnchorB() > **getAnchorB**(): [`Vec2`](/api/classes/Vec2) Get the anchor point on bodyB in world coordinates. #### Returns [`Vec2`](/api/classes/Vec2) #### Overrides [`Joint`](/api/classes/Joint).[`getAnchorB`](/api/classes/Joint#getanchorb) *** ### getBodyA() > **getBodyA**(): [`Body`](/api/classes/Body) Get the first body attached to this joint. #### Returns [`Body`](/api/classes/Body) #### Inherited from [`Joint`](/api/classes/Joint).[`getBodyA`](/api/classes/Joint#getbodya) *** ### getBodyB() > **getBodyB**(): [`Body`](/api/classes/Body) Get the second body attached to this joint. #### Returns [`Body`](/api/classes/Body) #### Inherited from [`Joint`](/api/classes/Joint).[`getBodyB`](/api/classes/Joint#getbodyb) *** ### getCollideConnected() > **getCollideConnected**(): `boolean` Get collide connected. Note: modifying the collide connect flag won't work correctly because the flag is only checked when fixture AABBs begin to overlap. #### Returns `boolean` #### Inherited from [`Joint`](/api/classes/Joint).[`getCollideConnected`](/api/classes/Joint#getcollideconnected) *** ### getCurrentLengthA() > **getCurrentLengthA**(): `number` Get the current length of the segment attached to bodyA. #### Returns `number` *** ### getCurrentLengthB() > **getCurrentLengthB**(): `number` Get the current length of the segment attached to bodyB. #### Returns `number` *** ### getGroundAnchorA() > **getGroundAnchorA**(): [`Vec2`](/api/classes/Vec2) Get the first ground anchor. #### Returns [`Vec2`](/api/classes/Vec2) *** ### getGroundAnchorB() > **getGroundAnchorB**(): [`Vec2`](/api/classes/Vec2) Get the second ground anchor. #### Returns [`Vec2`](/api/classes/Vec2) *** ### getLengthA() > **getLengthA**(): `number` Get the current length of the segment attached to bodyA. #### Returns `number` *** ### getLengthB() > **getLengthB**(): `number` Get the current length of the segment attached to bodyB. #### Returns `number` *** ### getNext() > **getNext**(): [`Joint`](/api/classes/Joint) Get the next joint the world joint list. #### Returns [`Joint`](/api/classes/Joint) #### Inherited from [`Joint`](/api/classes/Joint).[`getNext`](/api/classes/Joint#getnext) *** ### getRatio() > **getRatio**(): `number` Get the pulley ratio. #### Returns `number` *** ### getReactionForce() > **getReactionForce**(`inv_dt`): [`Vec2`](/api/classes/Vec2) Get the reaction force on bodyB at the joint anchor in Newtons. #### Parameters • **inv\_dt**: `number` #### Returns [`Vec2`](/api/classes/Vec2) #### Overrides [`Joint`](/api/classes/Joint).[`getReactionForce`](/api/classes/Joint#getreactionforce) *** ### getReactionTorque() > **getReactionTorque**(`inv_dt`): `number` Get the reaction torque on bodyB in N*m. #### Parameters • **inv\_dt**: `number` #### Returns `number` #### Overrides [`Joint`](/api/classes/Joint).[`getReactionTorque`](/api/classes/Joint#getreactiontorque) *** ### getType() > **getType**(): `string` Get the type of the concrete joint. #### Returns `string` #### Inherited from [`Joint`](/api/classes/Joint).[`getType`](/api/classes/Joint#gettype) *** ### getUserData() > **getUserData**(): `unknown` #### Returns `unknown` #### Inherited from [`Joint`](/api/classes/Joint).[`getUserData`](/api/classes/Joint#getuserdata) *** ### initVelocityConstraints() > **initVelocityConstraints**(`step`): `void` #### Parameters • **step**: [`TimeStep`](/api/classes/TimeStep) #### Returns `void` #### Overrides [`Joint`](/api/classes/Joint).[`initVelocityConstraints`](/api/classes/Joint#initvelocityconstraints) *** ### isActive() > **isActive**(): `boolean` Short-cut function to determine if either body is inactive. #### Returns `boolean` #### Inherited from [`Joint`](/api/classes/Joint).[`isActive`](/api/classes/Joint#isactive) *** ### setUserData() > **setUserData**(`data`): `void` #### Parameters • **data**: `unknown` #### Returns `void` #### Inherited from [`Joint`](/api/classes/Joint).[`setUserData`](/api/classes/Joint#setuserdata) *** ### shiftOrigin() > **shiftOrigin**(`newOrigin`): `void` Shift the origin for any points stored in world coordinates. #### Parameters • **newOrigin**: [`Vec2Value`](/api/interfaces/Vec2Value) #### Returns `void` #### Overrides [`Joint`](/api/classes/Joint).[`shiftOrigin`](/api/classes/Joint#shiftorigin) *** ### solvePositionConstraints() > **solvePositionConstraints**(`step`): `boolean` This returns true if the position errors are within tolerance. #### Parameters • **step**: [`TimeStep`](/api/classes/TimeStep) #### Returns `boolean` #### Overrides [`Joint`](/api/classes/Joint).[`solvePositionConstraints`](/api/classes/Joint#solvepositionconstraints) *** ### solveVelocityConstraints() > **solveVelocityConstraints**(`step`): `void` #### Parameters • **step**: [`TimeStep`](/api/classes/TimeStep) #### Returns `void` #### Overrides [`Joint`](/api/classes/Joint).[`solveVelocityConstraints`](/api/classes/Joint#solvevelocityconstraints)