2015-11-01 76 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(在朝好的方向发展)。

这还不完美,但现在会做。