2016-03-28 5 views
0

Когда мой объект перескакивает через блок, если он не может, он несколько секунд задерживается стороной стены, прежде чем объект слегка опустится и снова вернется, пока он не достигнет пола. В течение этого времени пользователь может снова прыгать, позволяя им обойти любую стену. Любые идеи о том, как исправить это?Game Maker Studio - предотвращение скольжения объектов по вертикали

if (place_meeting(x+hsp,y,Room)) 
{ 
    while (!place_meeting(x+sign(hsp),y,Room)) 
    { 
     x += sign(hsp); 
    } 
    hsp = 0; 
} 
x += hsp; 
//VerticalCollision 
if (place_meeting(x,y+vsp,Room)) 
{ 
    while (!place_meeting(x,y+sign(vsp),Room)) 
    { 
     y += sign(vsp); 
    } 
    vsp = 0; 

Приведенный выше код обрабатывает столкновения в игре, с экспериментирования я испортил его еще больше сейчас. Персонаж будет стоять против стены, и все замерзнет ... Я использую маску столкновения, но это не помогло.

+0

Вы могли бы показать, как реализована текущая логика? – enkryptor

ответ

0

Было бы легче, если бы мы могли видеть ваш код перехода/движения. Как правило, замораживание вызвано бесконечными циклами, попробуйте добавить ограничитель.

if (place_meeting(x+hsp,y,Room)) 
{ 
    var a = 64; 
    while (!place_meeting(x+sign(hsp),y,Room) and 64 > 0) 
    { 
     a --; 
     x += sign(hsp); 
    } 
    hsp = 0; 
} 

Кроме того, почему вы сталкиваетесь с комнатой? Что за комната?

Смежные вопросы