我在libgdx中制作了一款无尽的赛跑游戏。我已经制作了地形发生器等,但现在我正在努力进行纹理显示。我的地形由一层或多层64x64矩形组成。我想要做的是,如果数组循环中的当前矩形在其上方没有任何其他矩形,则显示不同的纹理。问题是,如何实现它?我试过多种方法,但是他们要么给我一个错误,要么就是没有正常工作:/
我不确定你是否理解我,所以这里是一个它应该是什么样子的图像:
但相反,显示的所有纹理都是相同的。
这是我目前的代码(我知道它不起作用,我现在不知道如何修改它)
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 :(得分: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(向右)。
它还不完美,但现在也会这样做。