我正在使用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);
它不必与任何其他子弹体碰撞或相互作用。
为了得到这个,有没有任何旗帜或类似的东西?
答案 0 :(得分:1)
只需绘制您想要绘制的内容,而不将其传递给物理引擎计算。 OpenGL完全不关心碰撞计算,你可以随意使用OpenGL进行绘制。
答案 1 :(得分:0)
让RigidBody不与任何东西发生碰撞的最简单方法是将它的碰撞组和遮罩设置为0。
向世界添加刚体时
mWorld->addRigidBody(object, 0, 0);
但是请注意,如果它是一个充满活力的身体,它仍会受到重力的影响,而且会下降。但是,如果需要,您当然可以使用此类配置。请记住,它会忽略所有碰撞,但力仍然可以应用于这样的身体。