【发布时间】:2014-06-26 08:16:39
【问题描述】:
我正在使用 libgdx 1.2.0 + eclipse。 我想从我的游戏屏幕中的一个类中绘制多个精灵,但只绘制了一个精灵。 这是我的渲染方法
@Override
public void render(float delta) {
Gdx.gl.glClearColor(100/255f, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if(Gdx.input.justTouched()){
touchX = Gdx.input.getX();
touchY = Gdx.input.getY();
//for(int i=0; i < enemy.length; i++)
//System.out.println(enemy[i].x + " " + enemy[i].y);
}
for(int i=0; i< enemy.length; i++){
enemy[i].update(delta);
if(enemy[i].getSprite().getBoundingRectangle().contains(touchX/ppX, touchY/ppY))
enemy[i].reset();
if(enemy[i].gameOver){
gameOver = true;
//System.out.println("Over");
}
}
game.batch.begin();
//if(!gameOver){
for(int i=0; i < enemy.length; i++)
enemy[i].getSprite().draw(game.batch);
//}
game.batch.end();
}
如果我打电话也会发生同样的事情
enemy[0].getSprite().draw(game.batch);
enemy[1].getSprite().draw(game.batch);
如果我只调用其中一个,它总是会画出一些东西。
这是 Enemy 类。我在 Enemy 的每个实例中从游戏屏幕类加载相同的精灵,但我改变了它的位置。
public class Enemy {
private final float minX=1, minY=2;
private final float maxX=31, maxY=18;
private float x,y;
private float time;
private Sprite sprite;
boolean gameOver;
public Enemy(Sprite sprite){
this.sprite = sprite;
reset();
}
public Sprite getSprite(){
return sprite;
}
public void reset(){
x = minX + (int)(Math.random() * (maxX - minX + 1));
y = minY + (int)(Math.random() * (maxY - minY + 1));
time = 0.0f;
gameOver = false;
sprite.setPosition(x, y);
}
public void update(float delta){
time += delta;
if(time >= 3.0f)
gameOver = true;
}
}
【问题讨论】: