Dobra to zrób inaczej, cofnij tego parenta. Tak jak wcześniej było i teraz zmodyfikuj kod tak:
GML
///Horizontal Collision
if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny))
{
while (!place_meeting(x+sign(hsp),y,obj_Collision))
{
x+= sign(hsp);
}
hsp = 0;
dir *= -1;
}
A prędkość:
GML
image_speed = movespeed*modyfikator;
image_speed działa tak że wartość 1 to normalna prędkość animacji czyli jedna klatka na jeden step. Jak chcesz spowolnić to zmniejsz tą wartość.
Obracanie zrobisz tak:
GML (step)
if (hsp != 0) image_xscale = sign(hsp);
image_xscale scaluje ci obrazek. Normalna wartość to 1. Wartość -1 spowoduje że obrazek się odbije w drugą stronę.
sign() zwraca:
1 gdy hsp > 0,
-1 gdy hsp < 0,
0 gdy hsp = 0 stąd ten warunek if (hsp != 0) by nigdy nie było zera bo wtedy postać zniknie