Bullet 引擎 详解 碰撞事件 回调函数
2010-03-28 22:44
483 查看
在bullet中一个非常普遍的应用是 针对两个物体发生碰撞时调用开发者自己提供的回调函数
比如球体碰撞到另一个球体 发出声音
下面是一个例子, 场景中有3种物体 球(动态),地板(静态),墙壁(静态)
球碰到墙和地板发出的声音不同。
所以需要设置这三种对象为不同类别,利用 collisionobj的userpointer来完成
int objclass[3] ={0,1,2};
boxBody->setUserPointer(&objclass[0]);
ground->setUserPointer(&objclass[1]);
wall->setUserPointer(&objclass[2]);
然后在update or render 中调用如下回调函数
主要的想法是从btPersistentManifold 中去获取当前narrowphase的碰撞对
但是要检查接触点,如果接触点大于0,则开始检查碰撞对象类别
根据类别再做不同的动作。
例子视频 http://www.youtube.com/watch?v=XXEClJjR05w
声音没录好, 等最近两天更新
比如球体碰撞到另一个球体 发出声音
下面是一个例子, 场景中有3种物体 球(动态),地板(静态),墙壁(静态)
球碰到墙和地板发出的声音不同。
所以需要设置这三种对象为不同类别,利用 collisionobj的userpointer来完成
int objclass[3] ={0,1,2};
boxBody->setUserPointer(&objclass[0]);
ground->setUserPointer(&objclass[1]);
wall->setUserPointer(&objclass[2]);
然后在update or render 中调用如下回调函数
主要的想法是从btPersistentManifold 中去获取当前narrowphase的碰撞对
但是要检查接触点,如果接触点大于0,则开始检查碰撞对象类别
根据类别再做不同的动作。
例子视频 http://www.youtube.com/watch?v=XXEClJjR05w
声音没录好, 等最近两天更新
-(void) Collide_callback{ int type_obj1, type_obj2; int numManifolds = sDynamicsWorld->getDispatcher()->getNumManifolds(); for(int i=0;i<numManifolds;i++) { btPersistentManifold * contactManifold = sDynamicsWorld->getDispatcher()->getManifoldByIndexInternal(i); int numContacts= contactManifold->getNumContacts(); if(numContacts>0) { btCollisionObject * obA = static_cast<btCollisionObject*>(contactManifold->getBody0()); btCollisionObject * obB = static_cast<btCollisionObject*>(contactManifold->getBody1()); type_obj1 = * (int *)obA->getUserPointer(); type_obj2 = * (int *)obB->getUserPointer(); if((type_obj1==0)&&(type_obj2==1)) { [g_ResManager playSound:@"test.caf"]; } if((type_obj1==0)&&(type_obj2==2)) { [g_ResManager playSound:@"test2.caf"]; } } } }
相关文章推荐
- (转)Bullet 引擎 详解 碰撞事件 回调函数
- Bullet 引擎 详解 碰撞事件 回调函数
- Bullet引擎碰撞事件中回调函数用法详解
- Bullet引擎碰撞事件中回调函数用法详解
- 详解C#委托,事件与回调函数
- 详解C#委托,事件与回调函数 --转载
- 详解C#委托,事件与回调函数(推荐)
- 两篇关于委托和事件的文章之二___详解C#委托,事件与回调函数
- 【转】详解C#委托,事件与回调函数
- 详解C#委托,事件与回调函数
- 【转】详解C#委托,事件与回调函数
- 详解C#委托,事件与回调函数
- [转载]详解C#委托,事件与回调函数
- [转载]详解C#委托,事件与回调函数
- [转载]详解C#委托,事件与回调函数
- 【转】详解C#委托,事件与回调函数
- 详解C#委托,事件与回调函数
- Bullet 引擎 详解 DBVT 分析
- Bullet 引擎 详解 DBVT 分析
- 详解C#委托,事件与回调函数