繁体   English   中英

libgdx精灵无法正确旋转

[英]libgdx sprite not rotating correctly

我正在使用飞船进行游戏,当按下前进按钮时,必须出现从后方冒出的火焰图像。 这仅在飞船垂直站立时有效。 当它上下颠倒时,它与飞船的背面并不完全对齐。 这是我为此所做的类的更新功能。

public void update(Rocket rocket) {
    sprite.setOrigin(rocket.getOriginX(), rocket.getOriginY()+Constants.ROCKET_HEIGHT);
    sprite.setSize(Constants.ROCKET_BOOST_WIDTH, Constants.ROCKET_BOOST_HEIGHT);
    sprite.setPosition(rocket.getPosition().x - sprite.getWidth()/2, rocket.getPosition().y-Constants.ROCKET_HEIGHT);
    sprite.setRotation(rocket.getBody().getAngle()* MathUtils.radDeg);
}

我已经尝试将原点设置为火箭的原点,这对我来说似乎是合乎逻辑的,但是我认为我并不完全了解原点。

[编辑1]

我不认为问题出在原点,我现在将其设置为

sprite.setOriginCenter();

我认为问题与以下事实有关:我总是将y设置为rocket.getPosition().y-Constants.ROCKET_HEIGHT (从火箭射出的火的高度是火箭高度的一半,并且具有相同的值宽度),仅当火箭垂直站立时才起作用,但是例如当其在其侧面时,需要从位置的x值中减去它。 我仍然不知道如何解决此问题,并且在游戏的其他部分也遇到了非常相似的问题。 如果有人可以解决此问题,那将是非常有用的,因为我没有任何线索。

[编辑2]

图片

垂直时: 垂直时

转到侧面时: 水平时

[编辑3]所有代码

public class RocketBoostDraw {
        private Sprite sprite;
        private Texture texture;
        private float offset = 0;

        public RocketBoostDraw(Rocket rocket) {
            texture = new Texture(Gdx.files.internal("boost.png"));
            sprite = new Sprite(texture);
            sprite.setSize(Constants.ROCKET_BOOST_WIDTH, Constants.ROCKET_BOOST_HEIGHT);
            sprite.setPosition(rocket.getPosition().x, rocket.getPosition().y - Constants.ROCKET_HEIGHT);
            offset = Constants.ROCKET_HEIGHT/2 + sprite.getHeight()/2;
        }

        public void update(Rocket rocket) {
            sprite.setPosition(rocket.getPosition().x + offset * MathUtils.cosDeg(rocket.getRotation()), rocket.getPosition().y+(offset)*MathUtils.sinDeg(rocket.getRotation()));
            sprite.setRotation(rocket.getBody().getAngle()* MathUtils.radDeg);
        }

        public void draw(SpriteBatch batch, Rocket rocket) {
            sprite.draw(batch);
        }
    }

[编辑4]新图片

在此处输入图片说明

在此处输入图片说明

无需旋转精灵,而是可以在将其绘制到批次时直接向右旋转纹理。 我在其他地方也给出了相同的答案,它适用于所有人。 这是我的答案的链接:

如何在libgdx中的x轴上旋转图像?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM