Libgdx:如何检查当前矩形上方是否有矩形?

时间:2015-11-01 11:56:34

标签: java arrays libgdx textures

我在libgdx中制作了一款无尽的赛跑游戏。我已经制作了地形发生器等,但现在我正在努力进行纹理显示。我的地形由一层或多层64x64矩形组成。我想要做的是,如果数组循环中的当前矩形在其上方没有任何其他矩形,则显示不同的纹理。问题是,如何实现它?我试过多种方法,但是他们要么给我一个错误,要么就是没有正常工作:/

我不确定你是否理解我,所以这里是一个它应该是什么样子的图像: 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);
        }

请给我一个提示。

1 个答案:

答案 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(向右)。

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