绘制随机图像libgdx

时间:2014-03-04 20:50:03

标签: java android libgdx

我正在使用libgdx学习java游戏开发并遇到以下问题。

我有一个Rectangle数组,我迭代并根据矩形的位置绘制图像。

我的问题是如何在每次渲染时绘制随机图像,但仍然保持绘制相同的随机图像,直到它离开屏幕。目前它正在绘制相同的图像,但我想知道如何绘制不同的管道图像。

谢谢

我的迭代者

 Iterator<Rectangle> upperIter = upperPipes.iterator();
      while(upperIter.hasNext()) {
         Rectangle upperpipe = upperIter.next();
         upperpipe.x -= 8 * Gdx.graphics.getDeltaTime();
         if(upperpipe.x  < -32) upperIter.remove();

我的抽奖方法

public void drawPipes(){
    batch.begin();
       for(Rectangle upperPipe: Pipes.lowerPipes) {
           batch.draw(Assets.pipeImg, upperPipe.x, upperPipe.y,   upperPipe.width, upperPipe.height);
        batch.end();

       }

2 个答案:

答案 0 :(得分:0)

获得可重复随机数据的一个好方法是使用Random对象(java.util.Random适合游戏使用),并为其提供非随机种子。每次放入种子并请求相同的数字类型+范围序列时,您将得到相同的(伪 - )随机数。如果您需要不同的数字,只需更改种子即可。

举个例子:

Random rand = new Random(1234);
System.out.println(rand.nextInt()); // an int from Integer.MIN to Integer.MAX
System.out.println(rand.nextInt(100)); // an int from 0 to 100

每次都会输出以下内容。

-1517918040
33

但是更改种子(在构造函数中为Random),输出值将会改变。 rand.setSeed(seed)将重置Random以开始其序列。

当rect在屏幕上时,您可以使用它来反复生成相同的随机数集。

然而,一种更直接,更简单的方法是在创建时为每个矩形生成一个随机数,并存储该数字直到它离开:

public void drawPipes(){

    for(int i = 0; i<Pipes.color.size; i++){
        num = Pipes.color.get(i);
    }

    for(Rectangle bottomPipe: Pipes.lowerPipes) {
        switch(num){
            case 0:
                batch.draw(Assets.redPipeImg, bottomPipe.x, bottomPipe.y, bottomPipe.width, bottomPipe.height);
                break;
            case 1:
                batch.draw(Assets.yellowPipeImg, bottomPipe.x, bottomPipe.y, bottomPipe.width, bottomPipe.height); 
                break;
        }
    }
}

答案 1 :(得分:0)

解决!!

我创建了一个自定义管道类,只是创建了一个管道数组,每个进入数组的新管道对象都是一个随机图像。 我遍历数组,并在每个管道对象上调用draw方法。

简单而且完美无缺