Хорошее представление о столкновении персонажа игрока в платформенной 3D-игре?

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

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

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

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

Что такое хорошее представление коллизии персонажа игрока в 3D-платформере?


person Martin    schedule 09.07.2009    source источник


Ответы (3)


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

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

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

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

person ThibThib    schedule 09.07.2009

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

person Javier    schedule 09.07.2009

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

person e.James    schedule 09.07.2009