Движение по лестницам уже давно было головной болью для разработчиков. Свой код я написал для нашего старого прототипа 2017 года и до недавнего времени он оставался почти неизменным. Он едва покрывал потребности нашего прототипа и не должен был дожить до релиза.
Однако именно потому, что он создавал так много багов и выявил так много ловушек, я теперь могу сказать, на что вам стоит обратить внимание при создании дизайна собственной системы. Я употребил термин «дизайн», потому что в основном имею в виду
гейм-дизайн, а не само программирование. Поэтому в статье не будет примеров кода, иначе бы она оказалась слишком объёмной.
Требования
Во-первых, я хочу вкратце описать ключевые особенности нашей системы движения. Если у вашей системы совершенно иные требования, то предложенные мной решения вам не подойдут.
1. Игра представляет собой
двухмерный сайд-скроллер, в котором игрок может
ходить и бегать. В нём
нет прыжков и рывков, то есть на лестницы можно попасть с самого верха или низа.
2. Движение по лестницам имеет собственные
анимации, а не те же, которые используются при горизонтальной ходьбе (и беге).
3. Есть
два типа лестниц: фронтальные (вертикальные) и боковые (диагональные). Последние могут опускаться вниз (с левого верха в правый низ) или подниматься вверх (с левого низа в правый верх).
4. Все
ступеньки имеют одинаковый размер для соответствия анимациям игрока. Лестницы могут иметь любую длину.
5. Коллайдер модели игрока (соответствующий движению по лестницам) находится в районе бёдер. Однако для работы всей системы это необязательное требование.
6. В нашей игре
нет боёв и других факторов, которые могут прикладывать к игроку силы, когда он движется по лестнице.
7. Наша цель заключается в создании
интуитивно понятного, не подверженного багам и красивого движения по лестницам.