Box2d物理引擎:b2ContactListener类碰撞检测
来源:互联网 发布:遗传算法 优缺 编辑:程序博客网 时间:2024/04/27 19:32
box2d有一个名为b2ContactListener类,需要继承此类,来接收碰撞的回调。
此类为c++代码。在xcode中,需要将.m文件更改为.mm文件
//接口文件
#import "Box2D.h"
class ContactListener : public b2ContactListener
{
private:
//碰撞开始
void BeginContact(b2Contact* contact);
//碰撞结束
void EndContact(b2Contact* contact);
};
//实现文件
#import "ContactListener.h"
#import "cocos2d.h"
void ContactListener::BeginContact(b2Contact* contact)
{
b2Body* bodyA = contact->GetFixtureA()->GetBody();
b2Body* bodyB = contact->GetFixtureB()->GetBody();
CCSprite* spriteA = (CCSprite*)bodyA->GetUserData();
CCSprite* spriteB = (CCSprite*)bodyB->GetUserData();
//更改碰撞体颜色
if (spriteA != NULL && spriteB != NULL)
{
spriteA.color = ccMAGENTA;
spriteB.color = ccMAGENTA;
}
}
void ContactListener::EndContact(b2Contact* contact)
{
b2Body* bodyA = contact->GetFixtureA()->GetBody();
b2Body* bodyB = contact->GetFixtureB()->GetBody();
CCSprite* spriteA = (CCSprite*)bodyA->GetUserData();
CCSprite* spriteB = (CCSprite*)bodyB->GetUserData();
//更改碰撞体颜色
if (spriteA != NULL && spriteB != NULL)
{
spriteA.color = ccWHITE;
spriteB.color = ccWHITE;
}
}
//在刚体世界中添加监听
-(id) init
{
if ((self = [super init]))
{
//创建物理引擎世界
b2Vec2 gravity = b2Vec2(0.0f, -10.0f);
bool allowBodiesToSleep = true;
world = new b2World(gravity, allowBodiesToSleep);
//向刚体世界中添加监听
contactListener = new ContactListener();
world->SetContactListener(contactListener);
}
}
-(void) dealloc
{
//删除监听
delete contactListener;
[super dealloc];
}
此类为c++代码。在xcode中,需要将.m文件更改为.mm文件
//接口文件
#import "Box2D.h"
class ContactListener : public b2ContactListener
{
private:
};
//实现文件
#import "ContactListener.h"
#import "cocos2d.h"
void ContactListener::BeginContact(b2Contact* contact)
{
}
void ContactListener::EndContact(b2Contact* contact)
{
}
//在刚体世界中添加监听
-(id) init
{
}
-(void) dealloc
{
}
- Box2d物理引擎:b2ContactListener类碰撞检测
- box2d 系列之用b2ContactListener管理碰撞检测
- 实例介绍Cocos2d-x中Box2D物理引擎:碰撞检测
- 实例介绍Cocos2d-x中Box2D物理引擎:碰撞检测
- cocos2d box2d b2ContactListener 碰撞监听、碰撞处理、碰撞筛选
- 关于碰撞检测和物理引擎
- 使用物理引擎进行碰撞检测
- 使用物理引擎进行碰撞检测
- cocos2dx物理引擎和碰撞检测(一)
- cocos2dx物理引擎和碰撞检测(二)
- cocos2dx物理引擎和碰撞检测(三)
- 物理引擎里的碰撞检测
- 使用物理引擎进行碰撞检测
- Cocos2dx物理引擎碰撞检测总结
- cocos2dx3.x物理引擎的碰撞检测
- box2d 初识 强大的物理碰撞引擎 结合canvas
- box2d物理引擎学习
- Box2D物理引擎介绍
- jquery—ajax的异步交互,返回json串,再弹出层显示数据
- iOS Objective-C与JavaScript的交互
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- 服务器性能测试 ab
- android 语言设置修改
- Box2d物理引擎:b2ContactListener类碰撞检测
- 电脑开机后进入不了桌面
- JS读写COokie
- Ceph 源代码分析 -OS module
- 在线重定义表
- System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本
- iOS 在google地图上显示自己的位置
- 在Ubuntu 10.04下的右键中添加Open in Terminal的方法
- openfire 注册用户加密方法解析