box2d 碰撞监听
来源:互联网 发布:双拼域名.com 编辑:程序博客网 时间:2024/06/13 00:16
要监听碰撞,就应该用到box2d b2ContactListener类
其他废话不说了,直接上代码:
#ifndef ContactListener_H#define ContactListener_H#include "Box2D/Box2D.h"class Contact{public:b2Fixture *fixtureA;b2Fixture *fixtureB;};class IContactListener{public:virtual void updateContact() = 0;};class ContactListener :public b2ContactListener{public:ContactListener(void);~ContactListener(void);virtual void BeginContact(b2Contact *contact);virtual void EndContact(b2Contact *contact);virtual void PreSolve(b2Contact *contact, const b2Manifold *oldManifold);virtual void PostSolve(b2Contact *contact, const b2ContactImpulse *impulse);void addListener(IContactListener* pContactListener);public:std::list<Contact> contact_list;};#endif
#include "ContactListener.h"ContactListener::ContactListener(void){}ContactListener::~ContactListener(void){}//! Callbacks for derived classes.void ContactListener::BeginContact(b2Contact *contact){if (contact){Contact c; c.fixtureA = contact->GetFixtureA(); c.fixtureB = contact->GetFixtureB();contact_list.push_back(c);}else{CCLOG("error!");}B2_NOT_USED(contact);}void ContactListener::EndContact(b2Contact *contact){Contact myContact = { contact->GetFixtureA(), contact->GetFixtureB() }; std::list<Contact>::iterator posBegin = contact_list.begin();std::list<Contact>::iterator posEnd = contact_list.end();for (; posBegin != posEnd; posBegin++){if(posBegin->fixtureA == contact->GetFixtureA() && posBegin->fixtureB == contact->GetFixtureB()){contact_list.erase(posBegin);break;}}B2_NOT_USED(contact);}void ContactListener::PreSolve(b2Contact *contact, const b2Manifold *oldManifold){B2_NOT_USED(contact);B2_NOT_USED(oldManifold);}void ContactListener::PostSolve(b2Contact *contact, const b2ContactImpulse *impulse){B2_NOT_USED(contact);B2_NOT_USED(impulse);}
m_plistener = new ContactListener();m_pworld->SetContactListener(m_plistener);
这样box2d监听就完成了
0 0
- box2d 碰撞监听
- cocos2d box2d b2ContactListener 碰撞监听、碰撞处理、碰撞筛选
- box2d碰撞规则说明
- box2d 碰撞筛选
- Box2D 碰撞过滤规则
- box2d 碰撞过滤
- box2d碰撞过滤
- Box2d碰撞筛选
- Box2dの碰撞筛选
- box2d碰撞设定顶点
- Box2dの碰撞筛选
- box2d 获得碰撞冲量
- box2d 碰撞过滤
- box2d 碰撞过滤
- Box2D C++ 碰撞
- box2d b2Filter 碰撞过滤
- box2d 碰撞过滤
- Box2d的碰撞筛选
- eclipse汉字太小问题
- gstreamer的gst-launch常用插件
- d3学习之(Data Visualization with d3.js Cookbook )三(第三章)
- Android软键盘在清单文件中所有属性解释大全
- 遮罩层 CCClippingNode Stencil buffer is not enabled (ios/android)
- box2d 碰撞监听
- MAVEN常用命令
- C++处理URL的方法,项目有用到,过程记录如下
- Java TagSupport实现Web权限验证标签
- 接口能实例化
- [转]签了工作之后才发现,自己太草率了!(很长很真实!但会对你有所帮助的!)
- JAVA 参数传递
- 九度OJ 1526 朋友圈
- 作业2