cocos2d-x节点(CCPhysicsContact.h)API
2013-12-02 15:59
281 查看
本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
cocos2d-x节点(CCPhysicsContact.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记///cocos2d-x-3.0alpha0/cocos2dx/physics //两个物体接触的监听和处理 #include "CCPhysicsSetting.h" #ifdef CC_USE_PHYSICS #ifndef __CCPHYSICS_CONTACT_H__ #define __CCPHYSICS_CONTACT_H__ #include "cocoa/CCObject.h" #include "cocoa/CCGeometry.h" NS_CC_BEGIN class PhysicsShape; class PhysicsWorld; class PhysicsContactInfo; /** * @brief 联系信息,当两个形状相互接触时它会自动创建,当两个形状分离时,它会自动销毁. */ class PhysicsContact { public: /* * @brief get 形状 A 的联系. */ inline PhysicsShape* getShapeA() { return _shapeA; } /* * @brief get 形状 B 的联系. */ inline PhysicsShape* getShapeB() { return _shapeB; } /* * @brief get data. */ inline void* getData() { return _data; } /* * @brief 设置联系数据. 你必须自己管理内存,一般来说,你可以在联系开始时设置数据,在联系结束时销毁数据 */ inline void setData(void* data) { _data = data; } private: static PhysicsContact* create(PhysicsShape* a, PhysicsShape* b); bool init(PhysicsShape* a, PhysicsShape* b); private: PhysicsContact(); ~PhysicsContact(); private: PhysicsShape* _shapeA; PhysicsShape* _shapeB; PhysicsContactInfo* _info; void* _data; friend class PhysicsWorld; }; /* * @brief 当调用 onContactPreSolve 时 会生成presolve值. */ class PhysicsContactPreSolve { private: PhysicsContactPreSolve(); ~PhysicsContactPreSolve(); static PhysicsContactPreSolve* create(); bool init(); friend class PhysicsWorld; }; /* * @brief 当调用 onContactPostSolve 时 会产生 postsolve 值. */ class PhysicsContactPostSolve { private: PhysicsContactPostSolve(); ~PhysicsContactPostSolve(); static PhysicsContactPostSolve* create(); bool init(); friend class PhysicsWorld; }; /* * @brief 联系监听器. */ class PhysicsContactListener { public: PhysicsContactListener(); virtual ~PhysicsContactListener(); public: /* * @brief 两个形状开始接触时,它会调用,并只调用一次 */ std::function<bool(const PhysicsContact& contact)> onContactBegin; /* * @brief 在这一步骤里面两个形状碰触到一起. 回调函数 Return false 物理世界在这一步骤忽略碰撞 , true 通常进行处理,此外,您可能覆盖碰撞值 , elasticity, or surface velocity values (弹性,或表面速度值) */ std::function<bool(const PhysicsContact& contact, const PhysicsContactPreSolve& solve)> onContactPreSolve; /* * @brief 两个形状的接触和碰撞响应已处理。在这个时候,如果你想用它来计算音量或损失数量,你可以检测碰撞 脉冲/动能, 更多信息见 cpArbiter */ std::function<void(const PhysicsContact& contact, const PhysicsContactPostSolve& solve)> onContactPostSolve; /* * @brief 两个形状分开时,它会调用,并只调用一次 * onContactBegin 和 onContactEnd 总是成对的调用. */ std::function<void(const PhysicsContact& contact)> onContactEnd; }; NS_CC_END #endif //__CCPHYSICS_CONTACT_H__ #endif // CC_USE_PHYSICS
相关文章推荐
- cocos2d-x节点(CCPhysicsWorld.h)API
- cocos2d-x节点(CCPhysicsSetting.h)API
- cocos2d-x节点(CCPhysicsBody.h)API
- cocos2d-x节点(CCPhysicsShape.h)API
- cocos2d-x节点(CCPhysicsJoint.h)API
- cocos2d-X 节点(CCMenuItem.h)API
- cocos2d-x节点(CCActionTween.h)API
- cocos2d-x节点(CCVertex.h)API
- cocos2d-x节点(CCApplicationProtocol.h)API
- cocos2d-x节点(CCTransitionProgress.h)API
- cocos2d-x节点(CCCommon.h)API
- cocos2d-x节点(CCTransitionPageTurn.h)API
- cocos2d-X 节点(CCMotionStreak.h)API
- cocos2d-X 节点(CCActionFrameEasing.h)API
- cocos2d-x节点(CCClippingNode.h)API
- cocos2d-x节点(CCEvent.h)API
- cocos2d-X 节点(CCActionFrame.h)API
- cocos2d-x节点(CCEventListener.h)API
- cocos2d-X 节点(CCCamera.h.)API
- cocos2d-X 节点(CCActionManagerEx.h)API