2013-01-14 19 views
0

所以,我一直在關於一個平滑的API 2D遊戲Java教程的教程,我得到了如何使用API​​的基礎知識。但是,當我四處遊玩並嘗試製作遊戲時。我試圖在我的2D空間射擊遊戲中實施子彈/射擊系統。我似乎無法找到辦法做到這一點!不確定如何在Java Slick遊戲中實現子彈系統?

我試過在谷歌和YouTube上四處尋找,但它根本沒有幫助...!我現在所有的比賽都是從右向左移動。我希望能夠做到這一點,以便每次按下空格鍵時都會觸發子彈狀對象。我只是不知道如何去做......我希望有人能夠簡單地向新程序員解釋它!

+1

雖然很可能會有人能回答你的問題(我還沒有和引擎工作),我建議先得到Java的把握 - 通過一些[教程](HTTP: //docs.oracle.com/javase/tutorial/)。 –

+1

尋找其他人的幫助可能對你有用,但最好學會如何自己做,這樣你就可以完全理解這些概念。 – syb0rg

回答

1

假設您使用輪詢進行輸入,您需要爲空格鍵的update方法添加支票。如果空格鍵被按下,則將新實例Bullet添加到子彈數組中,並在構造函數中傳遞初始的x,yvelocity

Bullet類可能看起來像:

public class Bullet 
{ 
    public static float VELOCITY; 
    private Vector2f position; 

    public Bullet(float x, float y, float velocity) 
    { 
     position = new Vector2f(x, y); 

     VELOCITY = velocity; 
    } 

    public void update(float delta, boolean vertical) 
    { 
     if(vertical) 
     { 
      y += VELOCITY * delta; 
     } 
     else 
     { 
      x += VELOCITY * delta; 
     } 
    } 
} 

你也想呼籲bulelts更新方法在update方法。喜歡的東西做到這一點:

for(Bullet bullet : bullets) 
{ 
    bullet.update(delta, true); 
} 
5

我對斯利克瞭解不多,但「子彈系統」背後的想法並不是那麼糟糕。

除非你想在火災時立即點擊,看起來你並不這麼做,否則你需要做的背後的總體思路就是這樣。

首先,聽一下空格鍵吧。發生這種情況時,請創建一個新的「子彈」對象。

給這個物體一個運動方向和速度,然後逐漸向這個方向移動它。

移動它時,還會檢測它是否與敵人交叉。如果是這樣,那麼取下子彈並殺死敵人。

這是你應該做什麼的一個非常基本的想法。

+0

難道這一次只會發射一顆子彈嗎?或者我錯了?我不太確定,因爲我已經看到,ArrayList在其他人使用「射擊系統」之前...所以,我想問的是創建一個新的Bullet對象,允許幾個子彈被擊中時間? – user1975231

+0

好吧,'只要空格鍵被按下,創建子彈',那麼你就可以控制每個子彈的間隔並限制它們(彈藥) –

+0

就像Jeremy說的那樣,你可以檢測空格鍵是否被持續保持並持續生成子彈照原樣。另外,每次按空格鍵時,都會生成一個新的子彈。您可以使用數組列表或任何其他容器來組織它們,以便您可以像移動一樣進行操作並對其進行集中檢測。 – AlienHoboken