首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >libgdx精灵不能正确旋转

libgdx精灵不能正确旋转
EN

Stack Overflow用户
提问于 2017-04-28 23:48:19
回答 1查看 347关注 0票数 0

我正在和一艘宇宙飞船做游戏,当按下前进按钮时,必须出现从后面冒出的火的图像。这是有效的,但只有当宇宙飞船垂直站立时。当它颠倒时,它与飞船的后部并不完全对齐。这是我为它创建的类的update函数。

代码语言:javascript
运行
复制
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

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

代码语言:javascript
运行
复制
sprite.setOriginCenter();

我认为问题与我总是将y设置为rocket.getPosition().y-Constants.ROCKET_HEIGHT(火箭弹发射的高度是火箭弹高度的一半,具有相同的宽度)有关,这只在火箭垂直站立时有效,但例如当它站在一侧时,它需要从位置的x值中减去。我仍然不知道如何解决这个问题,而且我在游戏的不同部分也遇到了非常类似的问题。如果有人可以解决这个问题,这将是非常有帮助的,因为我没有线索。

编辑2

图片

垂直时:

当转到它的一侧时:

编辑3所有代码

代码语言:javascript
运行
复制
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张新图片

EN

回答 1

Stack Overflow用户

发布于 2017-04-29 14:36:02

而不是旋转精灵,你可以直接旋转你的纹理,当你绘制它到批次。我在其他地方也给出了同样的答案,它对每个人都有效。以下是我的答案的链接:

How can i rotate an image over its x axes in libgdx?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43684195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档