2013-05-28 47 views
-2

我正在製作一個遊戲,玩家會發出波浪(如潮汐而不是諧波),而且我有一個系統,以達到它的距離,它會移動一段距離並消失。它也從實體反彈(我可能會添加不太好)。我想知道是否有辦法讓這更現實和更可分,而不是完全改變。 這是曲線(我正在使用slick2d)。java中的更好的波浪

one = new Vector2f((float)referenceX, (float) referenceY); 
two = new Vector2f((float) (referenceX + ((width * amplitude)/Math.PI)), (float)(referenceY - (height * amplitude))); 
three = new Vector2f((float) ((referenceX + width) - ((width * amplitude)/Math.PI)), (float)(referenceY - (height * amplitude))); 
four = new Vector2f((float)(referenceX + width),(float)(referenceY));` 
new Curve(one, two, three, four); 

它通過移動參考點和擴展寬度來移動。

這裏是碰撞碼

if ((s.player.getBounds().getWidth()/2) + s.player.getBounds().getX() > 
       (e.getBounds().getX() + e.getBounds().getWidth())) 
{ 
    this.referenceX = e.getBounds().getX() + (e.getBounds().getWidth()/4); 
    this.referenceY = e.getBounds().getY(); 
} 
else if ((s.player.getBounds().getWidth()/2) + s.player.getBounds().getX() < 
       e.getBounds().getX()) 
{ 
    this.referenceX = e.getBounds().getX(); 
    this.referenceY = e.getBounds().getY(); 
} 
else 
{ 
    this.referenceX = s.player.getBounds().getX() + 4; 
    this.referenceY = e.getBounds().getY(); 
} 

什麼,我應該如何解決這個問題,使波浪看起來更逼真?

+1

我不確定這裏有足夠的信息。你能更具體地說明問題是什麼嗎? –

回答

2

看着這段代碼,我猜測波浪看起來並不像他們正在從玩家身上擴張,並且可能不會彈跳得很好。即使你的海浪從最簡單的實體反射回來,比如垂直於波浪路徑的直線牆壁,你也很難用曲線或者甚至是一堆曲線以現實的方式表現波浪。我想你會發現它更容易在更多的光線投射方式海浪建模:

取而代之的是玩家拍攝了一波,認爲他們拍攝顆粒固定數量:

  • 一波是一個粒子集合(它不一定是一個大數字)
  • 如果玩家以45度的角度射擊,波形寬度爲10度,那麼將他們的波浪看作是從玩家離開的11點角度分別爲40,41,42,43,44,45,... 50.您的波浪持續的時間越長,或者它的行程越遠,您可能需要更多的點來順利建模。
  • 每個點都是具有角度,路徑和行進距離的對象
  • 在每個時間增量期間,使用其路徑和距離計算該點的新位置(它可能隨着它的行進而減慢進一步或減慢每次它彈跳,在一定距離後死亡,甚至模型'吸波'牆)
  • 使每個點對象負責處理它的碰撞並相應地執行:當一個粒子碰到一個對象時,計算它的對象新的角度或路徑。
  • 當需要繪製波浪曲線或線段時,按順序通過粒子點。
+0

這聽起來像個好主意。我使用很多點(可能出現的波數)的問題是內存和幀率。這聽起來不錯,它可能會在很多電腦上運行不佳,但我的電腦可能會處理它。我將來會優化它。謝謝你的建議 – user2429028