【问题标题】:How to create infinitive random platform in endless running game?如何在无尽的跑步游戏中创建不定式随机平台?
【发布时间】:2014-08-11 01:52:01
【问题描述】:

我正在制作一个 2d 无尽的跑步游戏。我有一个由许多块组成的平台。每个块都有以下三种颜色之一:红色、蓝色、绿色。我不确切知道如何在运行时随机使用不同颜色的块。我使用了一个数组来存储块矩形,例如 wiki 页面上的示例 Drop(Simple game)。在渲染类中,我有这段代码可以在运行时更改块的颜色:

public void drawBlock() {
  TextureRegion region = new TextureRegion();

  for (Rectangle rec : colorBlock.getBlocksRec()) {
     if (colorBlock.isRed()) {
        region = red;
     }
     if (colorBlock.isGreen())
        region = green;
     if (colorBlock.isBlue())
        region = blue;
     batch.draw(region, rec.x, rec.y, rec.width, rec.height);
  }

}

但它似乎失败了,因为它将屏幕上的所有块同时变为一种颜色。

我在让方块连续移动时也遇到了一些问题。他们移动了,但看起来就像数百个街区相互重叠。我不知道如何以正确的方式控制块。我使用 TimeUtils 检查下一个块应该何时创建,但完全失败了。

【问题讨论】:

  • 不,我刚刚使用矩形重叠进行碰撞,使用 Vector2 进行移动对象。另外,我不使用 Tiled 地图,因为我想在没有关卡的情况下进行无尽的奔跑。谢谢你的回复:)

标签: libgdx


【解决方案1】:

您可以使用阵列或地面方块在屏幕上出现时添加一个新条目,并在屏幕上不再显示时删除最旧的条目。我有一个类似的问题,看看:HERE

对于随机颜色,您可以在将新块添加到数组时使用 MathUtils.random(float f)。

例如这样的东西,或者带有开关:

float res = MathUtils.random(8f); 
//this returns a random float between 0 (inclusive) and 8 (exclusive)

if(res <= 2) { //[0-2]
//add green
}
if(res > 2 && res <= 5){//(2-5]
//add blue
}
if(res>5){//(5-8)
//add red
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多