在我的游戏中我有一个火箭精灵,在火箭的底部有一个动画火焰精灵,我希望火焰精灵在火箭旋转时与火箭底部对齐。
这是比赛开始时的火箭,一切都还好:
但是当我旋转火箭时,火焰不会像火箭的底部那样对齐:
如何使其对齐?
这是我的代码:
// draw rocket
rocketSprite.setRegion(AssetLoader.rocketTexture);
rocketSprite.setPosition(rocket.getX(), rocket.getY());
rocketSprite.setOrigin(rocket.getWidth() / 2, rocket.getHeight() / 2);
rocketSprite.setSize(rocket.getWidth(), rocket.getHeight());
rocketprite.setRotation(rocket.getRotation());
rocketSprite.setScale(1, 1);
rocketPodSprite.draw(game.batch);
//flame width and height
int w = 70;
int h = 20;
// randomly change scale of flame for effects
float sw = MathUtils.random(2f / 7f, 1);
float sh = MathUtils.random(0.5f, 1);
// draw flame
flameSprite.setRegion(AssetLoader.flameTexture);
flameSprite.setPosition(rocket.getX() + rocket.getWidth() / 2 - w, rocket.getY() - 15);
flameSprite.setOrigin(w, h / 2);
flameSprite.setSize(w, h);
flameSprite.setRotation(rocket.getRotation());
flameSprite.setScale(sw, sh);
flameSprite.draw(game.batch);
答案 0 :(得分:2)
你需要改变origin
- 你的精灵旋转的点数。
你的问题是火箭和火焰都在它们自己的中心周围旋转,但是你宁愿将它们旋转到火箭的周围。然后你需要设置火焰精灵原点与火箭中心的位置。
flameSprite.setOrigin(w, h / 2 + rocket.getHeight() / 2 + SPACE_BETWEEN_ROCKET_AND_FLAME);
正如我在您的情况中看到的那样,SPACE_BETWEEN_ROCKET_AND_FLAME
由于此职位设置而具有15 - flame.height
的值:
flameSprite.setPosition(rocket.getX() + rocket.getWidth() / 2 - w, rocket.getY() - 15);