gpt4 book ai didi

java - 根据触摸点计算旋转时的小偏移量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:06 25 4
gpt4 key购买 nike

我需要让 Sprite 面对光标/触摸点。触摸点的 vector 计算如下:

game.getCamera().unproject(
new Vector3().set(Gdx.input.getX(), Gdx.input.getY(), 0)
, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight())

然后我使用以下方法计算 Sprite 需要转动的度数:

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);
}

问题是在一些旋转中有一个小的偏移,例如(红点表示触摸位置,箭头是需要旋转的 Sprite ),在第一张图片中它大致在应该的位置但是在其他人已经走了,是什么导致了这个错误?:

enter image description here enter image description here

正如您在前 2 张图片中看到的那样,X 轴发生了微小变化,精度急剧下降。

更多例子:

enter image description here enter image description here

最佳答案

无论原点如何,位置都在左下方,因为原点是相对于位置的。所以你是根据 Sprite 的左下角而不是中心来计算角度的。如果您想测量相对于 Sprite 中心的角度,您需要将位置偏移原点。

double angle = Math.atan2(
vector.y - position.y - spriteOrigin.y,
vector.x - position.x - spriteOrigin.x);

在绘制 sprite 时也要牢记这一点......它的位置总是在左下角,所以在设置它的位置时要考虑到这一点。

关于java - 根据触摸点计算旋转时的小偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24759463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com