Хорошее коллизионное представление персонажа игрока в 3d-платформе? - PullRequest
2 голосов
/ 09 июля 2009

Я пытаюсь сделать простую трехмерную платформенную игру. У меня проблема с обнаружением столкновений и ответом. В настоящее время я представляю персонажа своего игрока (для столкновений между стенами и полом) сферой.

Я использую простые силы тяжести и силы направленности, используя клавиши со стрелками для движения.

Моя проблема возникает, когда я подхожу к краю (как скала). Я скользю по краю, как мяч, но поведение, которое я ищу, это упасть с края, как вертикальный цилиндр. Логическое «Я на платформе или я не на платформе», а не «Я постепенно скатываюсь с края».

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

Что такое хорошее представление столкновения персонажа игрока в игре с трехмерной платформой?

Ответы [ 3 ]

1 голос
/ 09 июля 2009

Вы можете оставить сферу для обнаружения столкновений.

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

Одним из распространенных решений является использование сферы (поскольку столкновение легко вычислить) для головы, туловища и цилиндра для ног и рук (вы также можете добавить сферу для рук и ног). *

У вас есть возможность прочитать эту книгу ?

1 голос
/ 09 июля 2009

Попробуйте сжатый эллипсоид. Просто вытяните сферу вдоль вертикальной оси.

0 голосов
/ 09 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...