移除刚体,但仍然会发生碰撞
Removing a rigid body, but still getting collisions for it
本文关键字:碰撞 更新时间:2023-10-16
删除刚体的正确方法是什么,我只是这样做来删除它:
void removeRigidBody(btDynamicsWorld* pDynamicsWorld, btRigidBody* rb)
{
pDynamicsWorld->removeRigidBody(rb);
delete rb->getMotionState();
delete rb;
}
然而,在我执行pDynamicsWorld->stepSimulation
pDynamicsWorld->getCollisionObjectArray()
中
实际上,这是我发现的。在评论中发布代码看起来很糟糕,这就是为什么答案。
//remove the rigidbodies from the dynamics world and delete them
int i;
for (i=m_dynamicsWorld->getNumCollisionObjects()-1; i>=0 ;i--)
{
btCollisionObject* obj = m_dynamicsWorld->getCollisionObjectArray()[i];
m_dynamicsWorld->removeCollisionObject( obj );
delete obj;
}
从碰撞对象中移除body
和大多数bug一样,这只是一个愚蠢的错误。对不起,那些花时间阅读它的人。
这个错误实际上是在一些java调用removeRigidBody的jni。
if (body.id > 0) {
id
实际上是btRigidBody
地址的整型转换,所以当然任何!= 0
整数都可以是有效的地址。在x86上,地址恰好是<0在另一台设备上恰好是> 0
相关文章:
- 落砂模拟碰撞检测C++和SFML
- SFML 碰撞永远不会在我的系统中注册
- 在均匀网格中处理碰撞
- 平台游戏 - 下车时避免与平台碰撞
- AABB 碰撞使实际精灵的大小翻倍
- 具有随机值的多个对象及其碰撞的 SFML
- SFML 中的重力和碰撞检测
- 我的碰撞检测中的奇怪行为
- Box2D Contact Listener碰撞仅间歇性工作
- 如何为球形物体和三角形地形提供高效的碰撞检测和响应
- 同时与两个片段着色器发生碰撞
- 2D 障碍物碰撞
- 可破坏的网格块会导致奇怪的碰撞
- ptrdiff_t typedef 碰撞 - 谷歌测试和英特尔蟒蛇
- 玩家移动和碰撞之间的交互问题
- 圆形与方形碰撞检测以及需要响应C++ |OpenGL。我的问题就是这个"I need to keep the circle outside the square"
- 视觉 SIGSEGV 在C++碰撞预防
- 球的预测碰撞
- 矢量迭代器在碰撞时不可递增
- Cocos2d-x TiledMap,在调用 getLayer() 获取碰撞层时返回一个 nullptr?