Я работаю с 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);
Он не должен сталкиваться или взаимодействовать с любым другим телом пули.
Есть ли какой-нибудь флаг или что-то подобное, чтобы получить это?
Просто нарисуйте все, что вы хотите нарисовать, не передавая это в вычисления физического движка. OpenGL совершенно не связан с вычислениями столкновений, вы можете рисовать с OpenGL все, что захотите.
Самый простой способ заставить RigidBody не сталкиваться ни с чем — это установить его группу столкновений и маску на 0.
При добавлении твердого тела в мир
mWorld->addRigidBody(object, 0, 0);
Заметьте, однако, что если это динамическое тело, оно все равно будет подвержено гравитации и упадет. Но, конечно, вы можете использовать такую конфигурацию, если вам это нужно. Просто имейте в виду, что он будет игнорировать все столкновения, но силы все еще могут быть применены к такому телу.