簡體   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