禁用一个身体的每次碰撞

时间:2017-04-12 09:42:09

标签: c++ bulletphysics bullet rigid-bodies

我正在使用Bullet和OpenGL,基本上我有一个机构,我希望它出现在屏幕上但不会发生碰撞。

它只需要是视觉的。

我正在创建这样的对象:

btBoxShape* colShape = createBoxShape(btVector3(1, 1, 1));
m_collisionShapes.push_back(colShape);
btTransform startTransform;
startTransform.setIdentity();
btScalar mass(0.5f);
bool isDynamic = (mass != 0.f);
btVector3 localInertia(0, 0, 0);
   if (isDynamic)
       colShape->calculateLocalInertia(mass, localInertia);
startTransform.setOrigin(btVector3(5.0, 0.5, 0.0));
createRigidBody(mass, startTransform, colShape);

它不必与任何其他子弹体碰撞或相互作用。

为了得到这个,有没有任何旗帜或类似的东西?

2 个答案:

答案 0 :(得分:1)

只需绘制您想要绘制的内容,而不将其传递给物理引擎计算。 OpenGL完全不关心碰撞计算,你可以随意使用OpenGL进行绘制。

答案 1 :(得分:0)

让RigidBody不与任何东西发生碰撞的最简单方法是将它的碰撞组和遮罩设置为0。

向世界添加刚体时

mWorld->addRigidBody(object, 0, 0);

但是请注意,如果它是一个充满活力的身体,它仍会受到重力的影响,而且会下降。但是,如果需要,您当然可以使用此类配置。请记住,它会忽略所有碰撞,但力仍然可以应用于这样的身体。