Как я могу обнаружить уступы?


18

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

Как я могу определить, есть ли уступ, и достаточно ли у персонажа места, чтобы подняться наверх?


Этот вопрос был создан как каноническая версия двух предыдущих вопросов. Смотрите мета обсуждение здесь .
двойник


1
Кроме того, ссылки на вопросы, о которых говорилось в мета: gamedev.stackexchange.com/questions/38066/… и gamedev.stackexchange.com/questions/15491/…
MichaelHouse

Ответы:


22

Видео для Overgrowth Alpha 132 показывает, как они реализовали скалолазание.

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

Их обнаружение уступа состоит из двух частей:

Обнаружение стены (с помощью сферы)

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

Обнаружение уступа (с использованием цилиндра)

Если игрок касается стены, цилиндр сместится вниз с определенного расстояния над позицией игрока, пока он не коснется выступа. Это определяет три вещи:

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

Удивительный метод и фантастический пример +1
Bugster

«цилиндр сместится вниз с определенного расстояния над позицией игрока» Какое расстояние? Это очень важно при работе в помещении (потолок может пересечь случайно).
Тара

1
@Dudeson В прошлом я использовал raycast, чтобы сначала найти поверхность выступа, прежде чем приступить к проверке громкости, чтобы убедиться, что есть достаточно свободного пространства для подъема. Поскольку raycast является направленным, он не воспринимает потолки как ложные срабатывания - хотя он может зацепиться за следующий этаж, если источник слишком велик. Точные метрики будут зависеть от множества особенностей каждой игры - размер персонажа,
радиус действия

@DMGregory Хорошая идея с лучами!
Тара
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.