Ходьба по неровной поверхности в платформере в Game Maker
Всем привет! Сегодня я Вам расскажу о том, как реализовать ходьбу по неровной поверхности в плаформере. Для начала давайте рассмотрим способ данной реализации. Итак. Для работы моего способа у вас ходьба в платформере должна быть осуществлена следующим образом: при движении спрайт игрока должен отражаться соответственно направлениям, т.е. если игрок движется влево, то image_xscale = -1;, иначе image_xscale = 1;. Каким же образом мы будем перемещать игрока вдоль неровной поверхности? К нам на помощь приходят циклы. Циклом мы проверяем кажду свободную позицию впереди игрока и чуть выше, и если эта эта позиция свободна, то перемещаем туда игрока. Давайте теперь рассмотрим код. (Данный код помещать в Step)
Code
var Dir, D, xn, yn; if image_xscale == -1 {Dir = 180; D = -10} else {Dir = 0; D = 10}
if place_meeting(x+D, y, o_solid) {
for(i = 0; i < 135; i += 2) { xn = x + lengthdir_x(speed, Dir + i); yn = y + lengthdir_y(speed, Dir + i); if place_free(xn, yn) {x = xn; y = yn; exit;} } }
В начале мы объявляем временные переменные, хранящие направление игрока и позицию впереди игрока.
Dir - напрвление D - отражение спрайта (сторона, в которую смотрит игрок) xn, yn - переменные, хранящие свободную позицию перед игроком.
Далее изменяем эти переменные. Если спрайт отражён влево, т.е. игрок смотрит влево, то изменяем Dir на 180 (180 - направление влево), D - присваиваем значение -10 (-10 - позиция левее). Аналогично с другим. Далее ставим проверку на столкновение с объектом. x+D - из переменной D считывается текущее направление игрока. (Лучше всего для всех твёрдых объектов создать один родительский, и проверять столкновение только с ним, потому, что проверять столкновения со всеми объектами - очень трудоёмкий процесс) И если столкновение произошло, то запускаем цикл, проверяющий все свободные позиции относительно игрока, и если эта позиция найдена, то в переменные xn, yn записываем найденную свободную позицию и ставим проверку на эту позицию, и если она свободна, то перемещаем туда игрока и выходим из цикла.
На этом урок окончен. Спасибо за внимание! До новых встреч!
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Ходьба по неровной поверхности в платформере в Game Maker», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Всё, конечно, хорошо, но это сработает только для уровней, состоящих из больших блоков. Для ландшафтов типа Worms и Scorched Earth это будет чересчур ресурсоёмко. Через массив, по-моему, лучше было бы.