Как разрешить проникновение во время реакции на столкновение в простой игре, моделирующей динамику твердого тела - PullRequest
0 голосов
/ 12 января 2012

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

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

Так что мой вопрос в том, есть ли лучший способ разрешить проникновение.Я думал не просто перемещать объекты линейно, но, возможно, также как-то вращать их.Или, может быть, вообще не двигать их, просто как-то отрегулируйте их скорости (в дополнение к импульсным вычислениям), чтобы они перестали двигаться навстречу друг другу.Но я просто догадываюсь здесь.Есть идеи?

...