1

我正在製作一臺平臺遊戲機。這是我到目前爲止:http://megaswf.com/s/2486396(移動和箭頭鍵跳)。AS3 - 在BitmapData中查找給定x座標的最高y座標?

我使用地面的位圖數據來測試與玩家座標的碰撞,並且玩家正沉入幾個像素的地面(尤其是在上坡時)。爲了防止這種情況,我希望玩家的y座標立即改變,讓玩家坐在地上。以下是我工作:

if (groundClipBmpData.hitTest(rLoc, 255, bLocFuture)) { 
     playerClip.y = ??? 
    } 

我想玩家的y座標改變成爲groundClipBmpData的最高像素,在玩家的x座標。

我該怎麼做?

回答

0

就像我在其他問題時說:

使用while代替if

像這樣:

while(groundClipBmpData.hitTest(rLoc, 255, playerClipBmpData, bLocFuture, 255)) 
{ 
     playerClip.y--; 
} 
playerClip.y++; 

最快的方法是計算和存儲的最高座標提前值在一個數組中,然後使用玩家的'x'位置來確定地面的'y'。

+0

謝謝:)它的工作原理。不過,我不確定它是最快的解決方案。 – Ashley

+0

可能不是,你想要更快的嗎?除非你發現它是你遊戲中的「瓶頸」,否則我不會擔心。您可以通過在循環前後使用getTimer()來檢查計算機花費多少時間,然後減去:after - before:這會給你所需的毫秒數,我猜它會是0。 – zehelvion