我只爲Android製作遊戲。 我正在使用Libgdx作爲我正在進行的遊戲的框架,並且在繪製小精靈時遇到了麻煩。常規的SpriteBatch.draw()工作正常,但Sprite.draw()將無法正常工作。 這裏是我的主類的代碼:Libgdx Sprite.draw()不會繪製任何東西
private OrthographicCamera camera;
private Texture currentBackground;
private SpriteBatch batch;
private Bunker bunker;
private AssetManagerWrapper assetsManager = new AssetManagerWrapper();
private Turret turret;
@Override
public void create() {
camera = new OrthographicCamera();
camera.setToOrtho(false, C.WIDTH_TARGET_RESOLUTION, C.HEIGHT_TARGET_RESOLUTION);
batch = new SpriteBatch();
assetsManager.loadGFX();
assetsManager.finishLoading();
createBunker();
currentBackground = assetsManager.get(AssetsPaths.Gfx.Background.CITY_DAY);
}
private void createBunker() {
bunker = new Bunker(assetsManager.get(AssetsPaths.Gfx.Bunker.BUNKER, Texture.class));
turret = new Turret(assetsManager.get(AssetsPaths.Gfx.Bunker.TURRET, Texture.class), bunker.getCenterX(), (int) (bunker.getY() + bunker.getHeight() - 10));
}
@Override
public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
drawGFX();
}
private void drawGFX() {
batch.begin();
batch.draw(currentBackground, 0, 0);
bunker.draw(batch);
batch.end();
}
@Override
public void dispose() {
assetsManager.dispose();
}
地堡類擴展類稱爲遊戲對象延伸雪碧。 由於某種原因,此行:
bunker.draw(batch);
不繪製精靈。但如果我將其更改爲:
batch.draw(bunker.getTexture(), bunker.getX(), bunker.getY());
它的工作原理非常完美。我知道我可以繼續使用這種方式,但恐怕由於我不知道的原因,效率會降低。
行:
batch.draw(currentBackground, 0, 0);
運行完美了。
我錯過了什麼嗎?
預先感謝
編輯: 我改變了掩體對象位置爲x = 0和y = 0。 這是getVertices()的打印: 0.0, 0.0, -1.7014117E38, 0.0, 0.0, 0.0, 5.9, -1.7014117E38, 0.0, 0.0, 100.0, 59.0, -1.7014117E38, 0.0, 0.0, 100.0, 0.0, -1.7014117E38, 0.0, 0.0,
我真的不understan d的值,但似乎精靈不是在外面畫的。
地堡類只是擴展了遊戲對象類:
public class GameObject extends Sprite {
public GameObject(Texture image, int x, int y) {
setTexture(image);
setBounds(x, y, image.getWidth(), image.getHeight());
setPosition(x, y);
setOrigin(x, y);
}
}
你可以使用你的Bunker類進行編輯嗎?或者它只是擴展Sprite? – 2015-02-07 20:24:58