Так что я смог использовать физику пули, чтобы связать твердое тело с кубом и заставить его упасть во время рендеринга, но когда я попытался «прикрепить» твердое тело к игроку, игрок застрял под миром, неспособный двигаться.
Изначально я собирался использовать кинематические тела, но после исследования и их испытания кажется, что они неполные.
В конце концов, мой вопрос заключается в том, правильно ли я обрабатываю данные, чтобы обновить положение моей камеры, а также изменить твердые тела.
-Ниже приведен код, который я использую для создания твердого тела, а ниже — код для обновления обеих позиций.
btTransform t;
t.setIdentity();
t.setOrigin(btVector3(0, 0, 0));
btCapsuleShape* player = new btCapsuleShape(1, 1);
btVector3 inertia(1, 0, 0);
player->calculateLocalInertia(20, inertia);
btMotionState* motion = new btDefaultMotionState(t);
btRigidBody::btRigidBodyConstructionInfo info(20, motion, player, inertia);
PlayerBody = new btRigidBody(info);
world->addRigidBody(PlayerBody);
bodies.push_back(PlayerBody);
PlayerBody->setAngularVelocity(btVector3(0,0,0));
И код для обновления положения корпуса и камеры
gCamera.GetInput(window);
btVector3 t;
t = physics.PlayerBody->getLinearVelocity();
gCamera.position.x = t.getX();
gCamera.position.y = t.getY();
gCamera.position.z = t.getZ();
//Set
physics.PlayerBody->setLinearVelocity(btVector3(gCamera.position.x, gCamera.position.y, gCamera.position.z));
Задача ещё не решена.
Других решений пока нет …