(JavaGameMaking新手)Libgdx随机产生矩形(精灵?)

时间:2014-02-19 05:45:01

标签: java random libgdx

我想知道如何制作一种方法来产生多个不同的精灵或矩形。它是否正在使用数组?现在,下面的代码产生了每秒在随机位置产生的相同矩形(精灵)。所以我希望它选择自己随机不同的矩形(精灵)?

public class Chibi implements ApplicationListener {
Texture fallL;
OrthographicCamera camera;
SpriteBatch batch;
Array<Rectangle> chibis1;
long lastDropTime;



@Override
public void create() {  
    //Load image 
    fallL = new Texture(Gdx.files.internal("fallL.png"));

    camera = new OrthographicCamera();
    camera.setToOrtho(false,800,400);

    batch = new SpriteBatch();

    chibis1 = new Array<Rectangle>();
    spawnChibi();
}

private void spawnChibi() {
    Rectangle chibi1 = new Rectangle();
    chibi1.x = MathUtils.random(0, 800-64);
    chibi1.y = 480;
    chibi1.width = 64;
    chibi1.height = 64;
    chibis1.add(chibi1);
    lastDropTime = TimeUtils.nanoTime();

}

@Override
public void dispose() {
    fallL.dispose();
    bgMusic.dispose();
    points.dispose();
    lvup.dispose();
    batch.dispose();
}

@Override
public void render() {      
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    camera.update();

    batch.setProjectionMatrix(camera.combined);

    batch.begin();
    for(Rectangle chibi1 : chibis1){

        batch.draw(fallL, chibi1.x, chibi1.y);
    }
    batch.end();

    if (TimeUtils.nanoTime() - lastDropTime >1000000000) spawnChibi();
    //process user input
    Iterator<Rectangle> iter = chibis1.iterator();
    while(iter.hasNext()){
        Rectangle chibi1 = iter.next();
        chibi1.y -= 200*Gdx.graphics.getDeltaTime();
        if(chibi1.y + 64 < -60) iter.remove();

    }


}

@Override
public void resize(int width, int height) {
}

@Override
public void pause() {
}

@Override
public void resume() {
}
}

还要记住,我是这个java游戏制作和java的新手。 :)

1 个答案:

答案 0 :(得分:0)

有多种方法可以解决这个问题。

  • 您可以使用一些预定义的矩形和精灵填充数组(或List或其他一些数据结构)。然后,当您想要向世界添加矩形时,您可以随机选择数据结构。
  • 或者您可以使用随机数生成器动态生成矩形。

你采取哪种方法完全取决于我们没有的背景。