我需要一个精灵面对光标/触摸点。 触摸点的矢量计算如下:
game.getCamera().unproject(
new Vector3().set(Gdx.input.getX(), Gdx.input.getY(), 0)
, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight())
然后我用以下方法计算精灵需要转动的度数:
public void rotateTo(Vector3 vector) {
double angle = Math.atan2(vector.y - position.y, vector.x - position.x);
rotation = (float) Math.toDegrees(angle) - 90;
sprite.setRotation(rotation);
}
问题是在某些旋转中有一个小的偏移(例如,红点表示触摸位置,箭头是需要旋转的精灵),在第一张图片中它大致应该在哪里但是在其他人离开了,可能导致这个错误的原因是什么?:
正如您在前两张图片中看到的那样,X轴的变化很小,精度会急剧下降。
更多例子:
答案 0 :(得分:3)
无论原点如何,位置都在左下方,因为原点与位置有关。因此,您要根据精灵的左下角而不是中心来计算角度。如果要测量相对于精灵中心的角度,则需要通过原点偏移位置。
double angle = Math.atan2(
vector.y - position.y - spriteOrigin.y,
vector.x - position.x - spriteOrigin.x);
绘制精灵时请记住这一点......它的位置始终位于左下角,因此在设置其位置时请考虑到这一点。