Применяйте физику к игроку, используя физику пули

Поэтому у меня было много проблем, когда я пытался правильно применить физику к игре, используя физику пуль. Я пробовал кинематические тела безуспешно. Теперь я пытаюсь использовать твердое тело, которое у меня было немного успешно. Ниже приведен код обновления матрицы игрока и местоположения твердых тел. У меня вопрос, как я могу правильно обновить позицию игрока.

Обновление твердого тела плеера и матрицы камеры * gCamera.matrix — это просто проекция и матрица умножения вместе

 physics.PlayerBody->getMotionState()->getWorldTransform(k);
k.getOpenGLMatrix(glm::value_ptr(gCamera.matrix));

btVector3 j;
j = physics.PlayerBody->getLinearVelocity();

gCamera.position.x = j.getX();
gCamera.position.y = j.getY();
gCamera.position.z = j.getZ();btVector3 pastPos;
pastPos.setX(gCamera.position.x);
pastPos.setY(gCamera.position.y);
pastPos.setZ(gCamera.position.z);

gCamera.GetInput(window);float lVelocityX = sin(gCamera.horizontalAngle * 3.14159265359 / 180) * 2;
float lVelocityY = physics.PlayerBody->getLinearVelocity().y();
float lVelocityZ = cos(gCamera.verticalAngle * 3.14159265359 / 180) * 2;
//physics.PlayerBody->setLinearVelocity(btVector3(lVelocityX, lVelocityY, lVelocityZ));
physics.PlayerBody->setLinearVelocity(btVector3(gCamera.position.x, gCamera.position.y, gCamera.position.z));

btTransform t;
t.setFromOpenGLMatrix(glm::value_ptr(gCamera.matrix));
physics.PlayerBody->getMotionState()->setWorldTransform(t);
physics.PlayerBody->setCenterOfMassTransform(t);

0

Решение

Если вы хотите контролировать то, где находится игрок, используйте кинематику. Я знаю, что у вас были проблемы, но это лучшее решение.

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

Невозможно самостоятельно перемещать твердое тело надежным способом. Там, где мне приходилось телепортировать объекты в прошлом, я удалил и добавил новое твердое тело, но вы не хотите делать это каждый кадр для своего игрока.

1

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

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

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