2014-04-17 70 views
0

我想要創建非常簡單的跳躍動畫 - 在用戶HITS空間後,角色跳轉(沿軸上移400px並向下)。問題是設置跳躍限制(即400px)。按壓空間啓動動畫,讓它不做任何改變,角色不停止在400px。如何創建跳躍動畫

public void keyPressed(KeyEvent e) 
{ 
    int key = e.getKeyCode(); 

    if(key == KeyEvent.VK_SPACE) { 
     if(y > 400) { 
      dy = -1; 
     } else {     
      dy = 0; 
     } 
    } 
} 

y是字符座標,dy在actionPerformed()方法中改變y。

因此,打到400px以下的空間會將dy更改爲-1,並且從未再次更改爲0。我怎麼解決這個問題?

+0

我會認爲這是因爲它從來沒有再次擊中該方法。我想如果你按下空間,等待角色上升到400px,然後再次按下空間,它會回落。所以......你需要某種方式說:「嘿,如果這個人跳了,我需要檢查一下他的垂直位置,如果它是400px或更多,我需要把他放回去。」然後又有另一面旗幟說他正在墜落,並檢查以確保他安全地返回到地面。 –

+0

雅,但你不能這麼做,因爲他們不是他們的關鍵新聞事件嗎?所以只有在按下某個鍵時纔會觸發該方法。在你的遊戲循環中你需要一些其他的方法來檢查他的身高,因爲他正在上升/下降以檢查他的y位置,然後作出相應的迴應。 –

+0

有一個布爾isJumping,並使用它。 –

回答

0

你可以引入重力,引力可以是一個恆定的力量,向下推動你的精靈,每一次更新,時間流逝的時間,特定量的速度加到你的Y速度上。然後當用戶按下跳躍時,你會給你的Y速度一些負值。在每次更新期間,精靈會減慢向跳躍頂峯的跳躍,然後開始緩慢下降,同時提升速度。這裏的訣竅是選擇足夠大的初始負Y速度以達到所需的高度。

如果您的速度是以毫秒爲單位的像素指定的,那麼爲您的Y速度添加大約.01到.04的重力量應該是一個很好的數字,以便開始測試。