LibGDX问题旋转精灵(LibGDX problems rotating sprite)

2019-10-19 11:45发布

OK,所以我真的很困惑我以前旋转的精灵,也没有问题,如移动通过海洋旋转船,但由于某些原因,我有一个非常大的问题,这个时候。 所以,我创建在资产文件纹理,而不是静态的纹理。 我使用下面的加载质地:

class Assets{
    Texture img;
    public Assets(){
        img = new Texture(Gdx.files.internal("images/PNG.png")

然后,我通过调用调用主类资产:

Assets assets = new Assets()

然后,我有一个类,它是一个动画只是这个主角,因为他的动画不同于其他人物如此不同和多样化。

class Animations{
    Guy MYGUY;
    Texture firstTexture;
    ArrayList<Texture> running;
    Sprite CurrentSprite;
    public Animations(Texture standingStill, Guy myGuy){
        MYGUY = myGuy;
        firstTexture = standingStill;
        running = new ArrayList<Texture>();
        running.add(firstTexture);
        CurrentSprite = new Sprite(firstTexture);

    public void update (int direction, int state){
         CurrentSprite.setPosition(MYGUY.X, MYGUY.Y)
        // I have a switch here, but it does nothing yet because I haven't added in different actions for the character.
        //However I do have a switch for direction, because that is important right now
        switch(state){
        case Guy.LEFT:
            CurrentSprite.set rotation(180);
        //yes there are more, but even rotating 180 won't work correctly
        }

然后,我有一个渲染器类绘制的一切,我有对象MyGuy中呼吁世界里的对象myLand和我一起绘制它:

myLand.GUY.animation.CurrentSprite(batch);

所以我的问题就出现在转动,每当它旋转180度,它似乎总是绕坐标旋转(0,0),而不是精灵的中心。 因此,它通常结束了,我移动到五到右侧,但随后如果我尝试去左另外它具有双重的距离倒退,但摄像机的位置保持不变,和小伙子通常会消失的左侧或右侧屏幕。

Answer 1:

尝试使用rotate(...)方法,而不是setRotation(...).

setOrigin(widthSprite\2, heightSprite\2)

这一行动旋转精灵本身。



Answer 2:

相反旋转精灵的,只是这一条线上进行翻转:

CurrentSprite.flip(true, false);

第一布尔是X翻转(这是你想要去左边时,设置为真正的东西),第二个是Y翻转。



Answer 3:

尝试

sprite.setOriginCenter();

这应该有助于



文章来源: LibGDX problems rotating sprite