如何在无尽的跑步游戏中创建无限随机平台?

时间:2014-08-11 01:52:02

标签: libgdx

我正在制作一款2d无尽的跑步游戏。我有一个由许多块组成的平台。每个块都有三种颜色中的一种:红色,蓝色,绿色。我不确切知道如何在运行时使用不同颜色的随机块。我使用了一个数组来存储块矩形,就像维基页面上的示例Drop(简单游戏)一样。在render类中,我有这段代码在运行时更改块的颜色:

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进行检查,但它完全失败了。这种情况有什么理想吗?谢谢你的推荐!

1 个答案:

答案 0 :(得分:0)

您可以使用阵列或地面块,当它即将出现在屏幕上时添加新的阵列,并在屏幕上看不到它时删除最旧的条目。我有一个类似的问题,请查看:HERE

对于随机颜色,当您要向阵列添加新块时,可以使用MathUtils.random(float f)。

例如像这样的东西,或者用switch:

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
}