[英]How to move a sprite relative to another sprite's rotation?
在我的游戏中,我有一个火箭精灵,在火箭底部有一个动画的火焰精灵,我希望当火箭旋转时,火焰精灵与火箭底部对齐。
这是游戏开始时的火箭,一切正常:
但是当我旋转火箭时,火焰不会像这样与火箭底部对齐:
我如何使其对齐?
这是我的代码:
// 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);
您需要更改origin
-旋转精灵的圆点。
您的问题是,火箭和火焰都绕着自己的中心旋转,但是您想同时绕着火箭的中心旋转。 然后,需要用火箭中心的位置设置火焰精灵的原点。
flameSprite.setOrigin(w, h / 2 + rocket.getHeight() / 2 + SPACE_BETWEEN_ROCKET_AND_FLAME);
如您15 - flame.height
由于设置了此位置,因此SPACE_BETWEEN_ROCKET_AND_FLAME
值为15 - flame.height
:
flameSprite.setPosition(rocket.getX() + rocket.getWidth() / 2 - w, rocket.getY() - 15);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.