在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
声音没录好, 等最近两天更新

本文详细介绍了在Bullet引擎中如何处理物体碰撞事件,通过设置回调函数并在更新或渲染过程中调用,实现对不同物体碰撞做出不同响应。例如,当球体碰撞到墙壁或地板时,会根据碰撞对象的类别播放不同的声音。回调函数中通过遍历碰撞对并检查接触点数量,根据物体类别执行相应操作。

2354

被折叠的 条评论
为什么被折叠?



