2015-11-01 110 views
0

我在libgdx中製作了一款無盡奔跑的遊戲。我已經做了地形發生器等,但現在我正在努力與紋理顯示。我的地形由一個或多個64x64矩形層組成。我想要做的是,如果數組循環中的當前矩形在其上方沒有任何其他矩形,則顯示不同的紋理。問題是,如何實現它?我試過多種方法,但他們要麼給了我一個錯誤或只是沒有正常工作:/Libgdx:如何檢查當前矩形上方是否有矩形?

我不知道,如果你瞭解我,所以這是它應該是什麼樣子的圖像: Texture example

但相反,所有顯示的紋理都是相同的。

這裏是我當前的代碼(我知道這是行不通的,我只是不知道現在該怎麼修改)

Iterator<Rectangle> brickIter = bricks.iterator(); 

     while(brickIter.hasNext()) { 
      Rectangle brick = brickIter.next(); 
      Rectangle newBrick = new Rectangle(); 
      newBrick.width = brick.width; 
      newBrick.height = brick.height; 
      newBrick.x = brick.x; 
      newBrick.y = brick.y+brick.height; 


      if(!newBrick.overlaps(brick)) 
       game.batch.draw(textureBricksTop, brick.x, brick.y); 
      else 
       game.batch.draw(textureBricks, brick.x, brick.y); 
     } 

請給我一個提示。

回答

0

沒關係 - 我設法自己做到這一點。這裏的解決方案:

Iterator<Rectangle> brickIter = bricks.iterator(); 
    Rectangle prevBrick = new Rectangle(); 
    prevBrick.x = -1; 

    while(brickIter.hasNext()) { 
     Rectangle brick = brickIter.next(); 

     if((prevBrick.x != -1) && (prevBrick.x != brick.x)) 
      game.batch.draw(textureBricksTop, prevBrick.x, prevBrick.y); 
     else if(prevBrick.x != -1) 
      game.batch.draw(textureBricks, prevBrick.x, prevBrick.y); 

     prevBrick.width = brick.width; 
     prevBrick.height = brick.height; 
     prevBrick.x = brick.x; 
     prevBrick.y = brick.y; 
    } 

我意識到,當brick.x的變化,它是長方形的新列,因爲在地形生成,它的「for」循環的Y(上升)內環路X(在朝好的方向發展)。

這還不完美,但現在會做。