Персонаж застрял под миром

Так что я смог использовать физику пули, чтобы связать твердое тело с кубом и заставить его упасть во время рендеринга, но когда я попытался «прикрепить» твердое тело к игроку, игрок застрял под миром, неспособный двигаться.

Изначально я собирался использовать кинематические тела, но после исследования и их испытания кажется, что они неполные.

В конце концов, мой вопрос заключается в том, правильно ли я обрабатываю данные, чтобы обновить положение моей камеры, а также изменить твердые тела.

-Ниже приведен код, который я использую для создания твердого тела, а ниже — код для обновления обеих позиций.

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));

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector