Witam.
Mam animację broni, a dokładnie to odrzutu zamka. Są dwa sprity: jeden to postać z bronią w ręku (spr_player_gun), a drugi to dwu klatkowa animacja postaci z odrzutem zamka i jego powrotem na swoje miejsce (spr_player_shot). Wygląda to tak:
Glob Left Pressed -> sprite_index = spr_player_shot;
Animation end -> if sprite_index=spr_player_shot sprite_index=spr_player_gun
Polega to na tym, że po jednym naciśnięciu LPM animacja wykonywana jest tylko raz, czyli zamek broni w tył i spowrotem.
No i wszystko działa dobrze, do czasu aż dodam skrypt na poruszanie się postaci (w step)
GMLxx = x;
yy = y;
go_up = false;
go_down = false;
go_right = false;
go_left = false;
angle = 0;
if (keyboard_check(vk_up))
{
go_up = true;
}
if (keyboard_check(vk_down))
{
go_down = true;
}
if (keyboard_check(vk_right))
{
go_right = true;
}
if (keyboard_check(vk_left))
{
go_left = true;
}
buttons_pushed = (go_up & 1) + (go_right & 1) + (go_left & 1) + (go_down & 1);
if (buttons_pushed >= 1 && buttons_pushed <= 2)
{
x_dist = 48;
y_dist = 48;
if (go_right && go_up)
angle = pi*0.25;
else if (go_up && go_left)
angle = pi*0.75;
else if (go_left && go_down)
angle = pi*1.25;
else if (go_down && go_right)
angle = pi*1.75;
else if (go_right)
angle = 0;
else if (go_up)
angle = pi*0.5;
else if (go_left)
angle = pi;
else if (go_down)
angle = pi*1.5;
xx += cos(angle)*x_dist;
yy -= sin(angle)*y_dist;
image_angle = -90 + angle * 180 / pi;
}
if place_free(xx,yy)
{
if mp_linear_step(xx,yy,4,false)
{
entered = true;
if (!keyboard_check(vk_up) && !keyboard_check(vk_down)
&& !keyboard_check(vk_left) && !keyboard_check(vk_right))
{
image_single=0;
image_speed=0;
}
}
}
else
{
xx = x;
yy = y;
}
Po dodaniu tego kodu, animacja zatrzymuje się na pierwszej klatce sprita spr_player_shot, czyli tej z zamkiem broni przesuniętym w tył. Dalej nic się nie da zrobić, po ponownym naciśnięciu LPM animacja zostaje tak jak jest, czyli z odrzuconym zamkiem. Dlaczego tak się dzieje i jak temu zapobiec?
Pozdrawiam i z góry dziękuje za pomoc :)