2016-03-28 21 views
0

Nesnem bir blokun üzerine atlarsa, yapamazsa, nesne hafifçe düşmeden önce birkaç saniye boyunca duvarın yanına yapışır ve yere çarpıncaya kadar tekrar yapışır. Bu süre zarfında, kullanıcı herhangi bir duvarı baypas etmesine izin vererek tekrar atlayabilir. Bunu nasıl düzelteceğinizle ilgili bir fikriniz var mı?Oyun Üreticisi Stüdyosu - Nesnelerin dikey olarak kaymasını önleme

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; 

Yukarıdaki kod bile artık daha mahvettigini deneme ile, oyunda çarpışma işler. Karakter bir duvara karşı duracak ve her şey donacak ... Bir çarpışma maskesi kullanıyorum ama bu yardımcı olmadı.

+0

Geçerli mantığın nasıl uygulandığını gösterebilir misiniz? – enkryptor

cevap

0

Atlama/hareket kodunuzu görebilseydik daha kolay olurdu. Genel olarak, Donma sonsuz döngüden kaynaklanırken, bir sınırlayıcı eklemeyi deneyin.

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; 
} 

Ayrıca, neden Oda ile çarpışıyorsunuz? Oda nedir?