Libgdx 如何修复TouchDrawed中的拖动运动?
我正在创建一个可以拖放拼图块的程序。 我想在双击时增加90度的旋转。移动旋转的拼图块时,拖动时会出现奇怪的移动 e、 g.将其顺时针旋转90度,然后移动,拼图块将不会跟随鼠标,而是在任何鼠标移动时以向外螺旋旋转 每个旋转都有自己的奇怪运动,但当旋转360度时,运动又正常了 为什么会这样 似乎是侦听器的x和y输入导致了问题。public void touchInputEvent事件,浮点x,浮点y,int指针 我认为当轮换演员时,还需要做一些其他的事情,但我不知道是什么 继承组并具有自己的重写侦听器的拼图参与者Libgdx 如何修复TouchDrawed中的拖动运动?,libgdx,Libgdx,我正在创建一个可以拖放拼图块的程序。 我想在双击时增加90度的旋转。移动旋转的拼图块时,拖动时会出现奇怪的移动 e、 g.将其顺时针旋转90度,然后移动,拼图块将不会跟随鼠标,而是在任何鼠标移动时以向外螺旋旋转 每个旋转都有自己的奇怪运动,但当旋转360度时,运动又正常了 为什么会这样 似乎是侦听器的x和y输入导致了问题。public void touchInputEvent事件,浮点x,浮点y,int指针 我认为当轮换演员时,还需要做一些其他的事情,但我不知道是什么 继承组并具有自己的重写侦听
override fun doubleTap() {
super.doubleTap()
/*addAction(Actions.rotateBy(-90f, .25f))*/
rotateBy(-90f)
}
我希望拼图块始终跟随鼠标指针。我找到了答案。
显然,当旋转演员时,其坐标系也随之旋转
我用这个代码解决了这个问题:
override fun touchDragged(event: InputEvent?, eventOffsetX: Float, eventOffsetY: Float, pointer: Int) {
val cos = cos(self.rotation * MathUtils.degreesToRadians)
val sin = sin(self.rotation * MathUtils.degreesToRadians)
val tox = (eventOffsetX - self.grabOffsetX)
val toy = (eventOffsetY - self.grabOffsetY)
var deltaX = 0f
var deltaY = 0f
if (abs(cos) == 1f) {
deltaX = tox * cos
deltaY = toy * cos
} else {
deltaX = toy * -sin
deltaY = tox * sin
}
self.moveBy(deltaX, deltaY)
}
如果有人有什么解释的话,我很想听听。因为演员是旋转90度的,我不确定我的算法是否能以较小的增量工作。一个更好的解决方案可能仍然存在。