Заставьте игрока бегать по лестнице плавно

11

У меня есть игра 2D-платформа, где игрок всегда бежит направо, но местность не всегда горизонтальная. Пример:

Пример

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

Я думал о создании линии между краями лестницы и навязывании движения игрока по этой линии ... Что вы думаете? Есть ли что-нибудь более умное, чтобы сделать?

Как здесь

Франческо Боницци
источник

Ответы:

11

Если вы можете вращать ограничивающие рамки, я бы поместил повернутый на 45 градусов ящик у ног игрока и соединил бы его с одним не повернутым прямоугольником, чтобы представить остальную часть тела. Это может заставить игрока автоматически скользить по чему-нибудь достаточно маленькому.

Тем не менее, это, вероятно, приведет к некоторому отсечению модели игрока и лестницы.

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

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

_________________
|    |     |    |
|    |     |    |
|  A | pla | A  |
|____| yer |____|
     |     | _________________________ <- step 
     |     | |      
--------------------------------------------- <- ground
Ким
источник
12

Существует три основных подхода к работе с лестницами в видеоиграх:

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

Подход «Castlevania» заключается в том, что движение вверх / вниз по лестнице - это другой вид движения; Вы должны нажать «вверх» на контроллере, и для прохождения по лестнице воспроизводится специальная анимация «подъема по лестнице». Вариант этого - подход «Resident Evil», где перемещение вверх / вниз по лестнице рассматривается как полная заставка, которая воспроизводится, когда игрок нажимает кнопку взаимодействия; интерактивное восхождение по лестнице не допускается.

Вы упомянули подход «Почти все остальное»: относитесь к лестнице так, как будто она действительно является пандусом. В зависимости от того, что это за игра, вы можете расположить рампу на разной высоте относительно лестницы. Как правило, в 2D-игре трюк «лестницы на самом деле является рампой» менее заметен для игрока, если рампа находится на одном уровне с нижними углами каждого шага лестницы, в то время как в 3D-игре это обычно менее заметно, если рампа находится на одном уровне. с верхними углами каждого шага. (как в 2D-игре легче заметить, если ноги персонажа плавают над землей, и поэтому вы хотите минимизировать это, тогда как в 3D-игре легче заметить, если ноги персонажа обрезают землю, и поэтому вы хочу минимизировать это).

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

Большинство методов, с которыми я сталкивался, уже были описаны выше, но есть еще один, который не был упомянут. Когда игрок сталкивается с достаточно коротким вертикальным препятствием (скажем, 1/3 его высоты), просто поместите его сверху. Minecraft и движок Source, например, используют такой подход в такой ситуации. Кроме того, этот метод позволяет вам по-прежнему использовать чистую AABB для всей физики, при этом игроку не нужно постоянно испытывать необходимость прыгать вверх по лестнице.

Jwosty
источник
Было бы неплохо, если бы вы могли объяснить, как обнаружить такие препятствия.
Тара
0

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

Это похоже на идею карты высот, которая подробно описана в этой статье: http://info.sonicretro.org/SPG:Solid_Tiles#Slopes_And_Curves

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

В этой статье также представлен хороший обзор различных концепций уклона: http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/

PixelCake Games
источник