Мой первый урок для всех 8))
Почитал темы на форуме и не нашел такой. Вроде как не объяснялось нигде, а вещь довольно таки полезная для разных жанров.(не все темы просмотрел уж извольте 8(( ниасилю столько читать)
что в уроке:
1)создание движения персонажа в 4х направлениях разными путями(для разных уровней знания)
2)разбор собственно всего созданного
3)каким способом пользоваться?
4)еще один "экстра" способ создать тоже самое но исключительно на GML (скорее на проверку профи чем для обучения

)
5) где можно использовать, как улучшить?
6)естественно пример для скачивания
Итак, начнем:
1)Для того чтобы передвинуть вашего героя, как я понял, есть уйма способов. Мне самым удачным кажется функция
if place_free(x-4,y) then x-=4
поэтому давайте в событии клавиатуры для кнопки Left пропишем этот код. И такой же код пропишем в том же собитии только для кнопки Right и соответственно поменяем два минуса перед четверками на плюсы. готово, наш герой бегло двигается влево и вправо. Но что если противник обладает такой же скоростью(в данном случае скорость 4?) или даже чуть большей? Это not будет значить неизбежную смерть нашего героя, он сможет убежать если в код добавить еще одну небольшую строчку ;)
if keyboard_check(ord('X')) && place_free(x-4,y) then x-=2
для левой кнопки
и естественно таже строчка только с плюсами для правой кнопки.
примерно тоже самое можно создать и практически без кода. В событии нажатой кнопки вверх ставим квадрат с 8 стрелками и задаем движение вверх со скоростью 4 ставим этот квадрат между двумя треугольниками дальше ставим "else" и между еще двумя треугольниками ставим 8угольник со знаком вопроса и вот тут то и заминка. там придется написать " keyboard_check(ord('X')) " и нажать окей. а следом вставит квадрат со стрелками и приказать герою двигаться вверх пошустрее
( скорость в примере равна 6)
проделать такуюже операцию для клавиши вниз и мы почти закончили. остался один штрих для события отпушенных кнопок вверх и вниз надо поставить квадрат со стрелками и приказать остановится, а то персонаж будет вечно идти наверх.
2)Чтож мы тут такого понаделали? все просто: герой двигается в 4 стороны
(при нажатии 2 клавиш, напривер вверх и влево герой пойдет наискосок)
а при нажатой вдобавок букве "x" будет прибавлять скорости 8)
сделано двумя способами чтобы поняли и новички которые могут не сразу вникнуть в код хоть и довольно простой
(кто то же должен открыть программу в первый раз 8))
строчка if place_free(x,y) неоднакратно обсуждалась на форуме ее опустим. единственно что, так это при нажатии кнопки "x" и стрелки мы пишем не 6(скорость которая нам нужна) а 2, потому что мы прибавляем 2 к уже имеющимся 4м.
check_keyboard(ord('X')) это функция проверки нажата ли та или иная клавиша. В данном случае это: ord('X') тоесть клавиша "x" . Код каждой клавиши написан в стандартном хелпе в разделе GML
3)Что же лучше? тут уж как вам нравится 8) можно повозится и поэксперементировать с квадратами и сделать ровные послушные движения
(на это можно потратить много времени 8(( у меня его не было и поэтому вверх и вниз у меня персонаж " бежит " только если нажать "x" до начала движения вверх/низ)
, можно почитать про " движение другие темы "
(в обучениях созданию платформерам очень часто она встречаеся)
, можно скопировать код и не заморачиватся ;)
4)Люди знающие дальше у меня вопрос к вам 8) посмотрите нижеприведенный код и выразите свое мнение плз. критика/похвала но обоснованно 8))
{
if keyboard_check(vk_left) && x > 0 && place_free(x-4,y) then x -= + walk
if keyboard_check(vk_right)&& x < room_width -32 && place_free(x+4,y) then x -= - walk
else
if keyboard_check(vk_left)&& x > 0 && keyboard_check(ord('X')) && place_free(x-4,y) then x-= +run
if keyboard_check(vk_right)&& x < room_width -32 && keyboard_check(ord('X')) && place_free(x+4,y) then x-= -run
}
5)Использовать данный прием можно в платформерах, каких нибудь мейзах с видом сверху, туда же идут ТДС, и даже файтинги
а улучшить можно например ограничив бег по времени
(какоето время побегал и все, больш никак(в сложных мейзах для планировки задач повышенной сложности))
можно сделать так чтоб со временем способность бегать востанавливалась
(выносливость всем известная)
, например чтобы на бегу нельзя было стрелять
(или для особо заковыристых чтобы стрелять было сложнее)
, чтоб на бегу персонаж мог перелетать через небольшие ямы, или чтобы прыжок с разбега был повыше и подальше, к бегу можно добавить торможение
(бежл бежал а остановится сразу никак)
и уйма всяких вкусностей что бы улучшить вашу игру 8))