按照手指在 android 上的位置在 libgdx 中旋转精灵
Rotate sprite in libgdx by following the position of finger on android
我正在尝试根据手指在触摸屏上的位置来旋转精灵。
我有一个箭头,我希望在我将它拖到屏幕上时它始终指向我的手指。
我可以使用 sprite.setRotation(angle)
轻松将精灵设置为任意旋转
我该怎么办?
如果你能指出正确的方向,我将不胜感激。
(ax, ay)
是箭头中心的坐标,(fx, fy)
是手指的坐标,a
是角度,这里是一些伪代码:
dx = fx - ax
dy = fy - ay
if (dx == 0) {
a = 90
return
}
if (dy == 0) {
a = 0
return
}
//tan(a) == abs(dy) / abs(dx) therefore
a = arctan(dy / dx)
if (dx > 0 && dy > 0) {
// do nothing, a is correct
} else if (dx > 0 && dy < 0) {
a = 360 - a
} else if (dx < 0 && dy > 0) {
a = 180 - a
} else {
a = 180 + a
}
我还没有实施和测试它,如果有需要我会稍后做
我正在尝试根据手指在触摸屏上的位置来旋转精灵。
我有一个箭头,我希望在我将它拖到屏幕上时它始终指向我的手指。
我可以使用 sprite.setRotation(angle)
轻松将精灵设置为任意旋转我该怎么办?
如果你能指出正确的方向,我将不胜感激。
(ax, ay)
是箭头中心的坐标,(fx, fy)
是手指的坐标,a
是角度,这里是一些伪代码:
dx = fx - ax
dy = fy - ay
if (dx == 0) {
a = 90
return
}
if (dy == 0) {
a = 0
return
}
//tan(a) == abs(dy) / abs(dx) therefore
a = arctan(dy / dx)
if (dx > 0 && dy > 0) {
// do nothing, a is correct
} else if (dx > 0 && dy < 0) {
a = 360 - a
} else if (dx < 0 && dy > 0) {
a = 180 - a
} else {
a = 180 + a
}
我还没有实施和测试它,如果有需要我会稍后做