Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Игра в gamemaker зависает, когда персонаж трогает стены

Саша Клышов Ученик (111), открыт 2 дня назад
делаю платформер на gamemaker, и игра зависает намертво, когда персонаж трогает вертикальные поверхности. как исправить?
 var xDirection = keyboard_check(ord("D")) - keyboard_check(ord("A")); 
var jump = keyboard_check_pressed(vk_space);
var onTheGround = place_meeting(x, y + 1, oWall);

if (xDirection != 0) image_xscale = xDirection;

xSpeed = xDirection * spd;
ySpeed += 0.5;

if (onTheGround) {
if (xDirection != 0) { sprite_index = srobot_walk; }
else { sprite_index = srobot_idle; }

if (jump) {
ySpeed = -8
}
} else {
sprite_index = srobot_walk;
}

if (!onTheGround) {
sprite_index = srobot_jump;
}

if (place_meeting(x + xSpeed, y, oWall)) {

while (!place_meeting(x + sign(xSpeed), y, oWall)) {
x = xSpeed
}

xSpeed = 0
acc = 0
}

x += xSpeed;


if (place_meeting(x, y + ySpeed, oWall)) {

while (!place_meeting(x, y + sign(ySpeed), oWall)) {
y += sign(ySpeed);
}

ySpeed = 0;
}

y += ySpeed;
1 ответ
PS Просветленный (23231) 2 дня назад
Гениально впихнуть while (!place_meeting) для обработки столкновения со стеной. Что может пойти не так, если персонаж уже ВНУТРИ нее? Этот цикл просто обязан крутиться вечно, поздравляю с открытием бесконечности.
Саша КлышовУченик (111) 2 дня назад
а как чинить то
PS Просветленный (23231) Саша Клышов, Объяснено же: цикл зависает, потому что объект УЖЕ ВНУТРИ. Значит, или не перемещать его в стену вовсе, или вытолкнуть сразу, а не ждать погоды у моря этим вайлом.
Похожие вопросы