2014-03-04 107 views
0

我正在學習與libgdx的java遊戲開發,並有以下問題。繪製隨機圖像libgdx

我有一個Rectangle數組,我遍歷並根據矩形的位置繪製圖像。

我的問題是我如何繪製每個渲染的隨機圖像,但仍然保持繪製相同的隨機圖像,直到它離開屏幕。目前它正在繪製相同的圖像,但我想知道如何繪製每個不同的管道圖像。

謝謝

我的Iterator

Iterator<Rectangle> upperIter = upperPipes.iterator(); 
     while(upperIter.hasNext()) { 
     Rectangle upperpipe = upperIter.next(); 
     upperpipe.x -= 8 * Gdx.graphics.getDeltaTime(); 
     if(upperpipe.x < -32) upperIter.remove(); 

我的畫法

public void drawPipes(){ 
    batch.begin(); 
     for(Rectangle upperPipe: Pipes.lowerPipes) { 
      batch.draw(Assets.pipeImg, upperPipe.x, upperPipe.y, upperPipe.width, upperPipe.height); 
     batch.end(); 

     } 

回答

0

解決!

我創建了一個自定義管道類,並且創建了一個管道數組,每個進入該數組的新管道對象都帶有一個隨機圖像。 我迭代了數組,並在每個管道對象上調用draw方法。

簡單,它完美的作品

0

一個偉大的方式來獲得可重複的隨機數據是使用一個Random對象(是的java.util.Random適合遊戲使用),併爲其提供非隨機種子。每次放入種子並請求相同的數字類型+範圍序列時,您將得到相同的(僞隨機)數字。當你想要不同的數字時,只需改變種子。

作爲一個例子:

Random rand = new Random(1234); 
System.out.println(rand.nextInt()); // an int from Integer.MIN to Integer.MAX 
System.out.println(rand.nextInt(100)); // an int from 0 to 100 

將始終輸出以下,每一次。

-1517918040 
33 

但改變種子(在Random的構造函數中),輸出值會改變。 rand.setSeed(seed)將重置隨機開始其序列。

當rect在屏幕上時,您可以反覆使用它來產生相同的一組隨機數。

然而,更直接,更簡單的方法是將只產生一個隨機數爲創建時的每個矩形,並存儲數量,直到它離開:

public void drawPipes(){ 

    for(int i = 0; i<Pipes.color.size; i++){ 
     num = Pipes.color.get(i); 
    } 

    for(Rectangle bottomPipe: Pipes.lowerPipes) { 
     switch(num){ 
      case 0: 
       batch.draw(Assets.redPipeImg, bottomPipe.x, bottomPipe.y, bottomPipe.width, bottomPipe.height); 
       break; 
      case 1: 
       batch.draw(Assets.yellowPipeImg, bottomPipe.x, bottomPipe.y, bottomPipe.width, bottomPipe.height); 
       break; 
     } 
    } 
} 
+0

我遇到的問題是保持拉動直到其圖像被附加到矩形的舊圖像離開屏幕 – user2510952

+0

所以在圖像改變每次你不是有一個問題幀,因爲它每幀都選擇一個新的隨機圖像? –

+0

我很抱歉,這正是問題所在,我沒有完全理解你的答案。你能否給我書面的例子,以便我能理解你指的是什麼。 thx – user2510952