Это немного иначе делается.
В событии создания делается отдельная переменная xspeed = 0.
Она же изменяется при нажатии кнопок (как и hspeed).
И движение в шаге делается как
Код
var xsign; xsign = sign(xspeed);
repeat (abs(xspeed)) {
if (!place_meeting(x + xsign, y, Platform)) {
x += xsign;
} else { // врезались в стену
xspeed = 0;
break;
}
}
Таким образом игрок не застревает в стенах, поскольку из встроенной скорости используется лишь вертикальная, а по горизонтали движение идет отдельным циклом.