所以我用LibGDX制作了这个游戏。我有一个GroundTop和Ground类,在屏幕上绘制地面和地面顶部(在Assets类中加载图像),并最终应用与玩家的碰撞(这是一个平台游戏)。我试图做的是绘制4个不同的Ground实例和2个不同的GroundTop实例,以进行测试。但是,每个只有一个。看起来每个实例都会覆盖另一个实例,因为只有显示的实例具有在代码中创建的最后一个实例的坐标。为什么是这样的,我怎样才能让每个实例都显示出来?有什么让每个实例覆盖类中的其他实例吗?我完全失去了这一点。在此先感谢,并请询问您有任何问题,帮助澄清我的问题,并帮助我找到一个解决方案:)为什么实例在LibGDX中相互覆盖?
这里是我的代码:
Game.java
package com.mygdx.thetimetraveller;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.Array;
public class Game implements Screen {
public static int frameCount;
Array<Ground> groundList = new Array<Ground>();
Ground[] grounds = new Ground[1000];
GroundTop groundTop;
GroundTop groundTop2;
Game() {
load();
}
@Override
public void load() {
groundList.add(new Ground(50, 50));
groundList.add(new Ground(250, 250));
grounds[0] = new Ground(500, 500);
grounds[1] = new Ground(650, 650);
groundTop = new GroundTop(500, 20);
groundTop2 = new GroundTop(500, 200);
frameCount = 0;
}
@Override
public void display(SpriteBatch batch) {
frameCount ++;
groundList.get(0).Draw(batch);
groundList.get(1).Draw(batch);
grounds[0].Draw(batch);
grounds[1].Draw(batch);
groundTop.Draw(batch);
groundTop2.Draw(batch);
}
}
Ground.java
package com.mygdx.thetimetraveller;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class Ground {
private static double x;
private static double y;
Ground(double x, double y) {
this.x = x;
this.y = y;
}
public void Draw(SpriteBatch batch) {
batch.draw(Assets.simpleBlockTexture01_sprite, (float) x, (float) y);
}
}
GroundTop.java
package com.mygdx.thetimetraveller;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class GroundTop {
private static double x;
private static double y;
GroundTop(double x, double y) {
this.x = x;
this.y = y;
}
public void Draw(SpriteBatch batch) {
batch.draw(Assets.simpleBlockTextureTop01_sprite, (float) x, (float) y);
}
}
thetimetraveller,现在我对游戏很好奇。 :) – Daniele
哈哈,那么好吧。所以,长话短说,玩家找到一个时间机器,使用它,并不小心将一些饮料洒在它上面。然后他/她必须经过很多时区才能回家。我打算这样做,以便用户可以在特定时间选择及时去哪里。很高兴看到你有兴趣:D –
酷!祝你好运,我迫不及待地想玩! – Daniele