Я думаю здесь проблема в маске объектов, возможно есть какая-нибудь неровность. Да и сам скрипт не вызывает доверия.
Код
//Горизонтальное столкновение (Стены)
if (place_meeting(x+hspeed, y, o_grass))
{
while(!place_meeting(x+sign(hspeed), y, o_grass))
{
x += sign(hspeed);
}
hspeed = 0;
}
//Вертикальное столкновение (Полы)
if (place_meeting(x, y+vspeed, o_grass))
{
while(!place_meeting(x, y+sing(vspeed), o_grass))
{
y += sign(vspeed);
}
vspeed = 0;
}
Добавлено (10 декабря 2015, 23:28)
---------------------------------------------
И еще. Англ. слово "Grass" переводится как "Трава". Возможно тебе больше подойдет слово "Ground" - Поверхность, Земля, Почва, Грунт.