我正在尝试使用LibGDX在Android应用中旋转精灵。我使用sprite.rotate和sprite.setRotation试图旋转精灵,但没有一个有效。
public Cannon(){
cannend = new Texture("cannonend.png");
cannon = new Sprite(cannend, (Gdx.graphics.getWidth() / 2) - (cannend.getWidth() / 2) + 3, (Gdx.graphics.getHeight() / 2) + (Gdx.graphics.getHeight() / 6), (cannend.getWidth()), (cannend.getHeight()));
cannon.setPosition((Gdx.graphics.getWidth()/ 2) - (cannend.getWidth() / 2) + 3, (Gdx.graphics.getHeight() / 2) + (Gdx.graphics.getHeight() / 6));
cannon.setRotation(70);
cannon.setCenter((Gdx.graphics.getWidth()/ 2) - (cannend.getWidth() / 2), (Gdx.graphics.getHeight() / 2) + (Gdx.graphics.getHeight() / 6) - (cannend.getWidth() / 2));
}
当我在Playstate类中绘制这个sprite时,这是我使用的代码。
public PlayState(GameStateManager gsm) {
super(gsm);
cannon = new Cannon();
cannontop = new Texture("Cannon.png");
man = new Man(0, (Gdx.graphics.getHeight() / 4));
bg = new Texture("background.png");
cam.setToOrtho(false, 2160, 3840);
}
//跳过一些不相关的代码
@Override
public void render(SpriteBatch sb) {
sb.setProjectionMatrix(cam.combined);
sb.begin();
sb.draw(bg, cam.position.x - (cam.viewportWidth / 2), 0);
sb.draw(man.getTexture(), man.getPosition().x, man.getPosition().y);
sb.draw(cannontop, (bg.getWidth()/ 2) - (cannon.getTextureWidth() / 2) - 23, (bg.getHeight() / 2) + (bg.getHeight() / 5));
sb.draw(cannon.getTexture(), (bg.getWidth()/ 2) - (cannon.getTextureWidth() / 2), (bg.getHeight() / 2) + (bg.getHeight() / 5) - (cannontop.getWidth() / 2) + 8);
sb.end();
}
我刚刚学习了Java,所以如果我的一些代码不好,请原谅我。在绘制内容时,我还添加并删除了宽度和高度的单个像素 - 我不确定这是否正常,因为我通常使用比率,因为它们似乎不会影响屏幕尺寸变化时的游戏性。无论如何,我可以用什么来每一帧旋转一定量的精灵?另外,sprite.getX()做什么? 感谢。
答案 0 :(得分:0)
你没有绘制精灵,你正在绘制精灵的纹理。
sprite.draw(batch);