如何旋转libgdx

时间:2016-08-17 00:48:53

标签: java android libgdx

我正在尝试使用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()做什么? 感谢。

1 个答案:

答案 0 :(得分:0)

你没有绘制精灵,你正在绘制精灵的纹理。

sprite.draw(batch);