Вот мое второе решение.Это произошло из моего собственного проекта, поэтому требует изменения всего кода.
Я объяснил каждый раздел комментариями рядом с каждой строкой.
Событие шага:
var hinput = 0; //hinput = Horizontal Input
hinput = keyboard_check(vk_right) - keyboard_check(vk_left); //the trick I've used to declare the movement system, based on the arrow keys.
//pressing right = 1, pressing left = -1, pressing both or none = 0.
if (hinput != 0) //it is not 0, so the player is moving
{
sprite_index = s_player_walk; //changes the current sprite to the walking animation
image_xscale = hinput; //changes the direction it's facing: 1 = right, -1 = left.
//when it's 0, it keeps the last direction it faced.
}
else //the player is not moving
{
sprite_index = s_player_idle; //changes the current sprite to the idle animation
}
Что касается самих изображений.Для этого я использовал 2 отдельных спрайта:
s_player_idle
, который существует только из 1 кадра, и
s_player_walk
, который существует из 3 циклов.
Скорость изображения ужеопределяется в редакторе изображений для каждого отдельного спрайта, поэтому его не нужно снова определять в коде.