【问题标题】:Libgdx: how to check if there is a rectangle above current rectangle?Libgdx:如何检查当前矩形上方是否有矩形?
【发布时间】:2023-04-10 17:09:01
【问题描述】:

我正在 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);
        }

请给我一个提示。

【问题讨论】:

    标签: java arrays libgdx textures


    【解决方案1】:

    没关系-我自己设法做到了。这是解决方案:

    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发生变化时,它是新的矩形列,因为在生成地形时,它是y(向上)的“for”循环,x(向右)的循环。

    这还不完美,但现在可以了。

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 2015-03-05
      • 2022-01-15
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      相关资源
      最近更新 更多