如何修复 touchDragged 中的拖动运动?
How to fix dragged movement in touchDragged?
我正在创建一个 jigsaw puzzle game,您可以在其中拖放拼图。
我想通过双击添加 90 度的增量旋转。移动旋转的拼图时,拖动时出现奇怪的移动。
例如顺时针旋转 90 度后,再移动拼图块将不会跟随鼠标移动,而是在鼠标移动时向外螺旋旋转。
每次旋转都有自己奇怪的运动,但旋转 360 度时运动又是 o.k。
这是为什么?
问题似乎是听众 x 和 y 输入引起的。 public void touchDragged (InputEvent event, float x, float y, int pointer)
我认为在轮换演员时还需要做其他事情,但我不知道是什么...
拼图 actor 继承了 Group 并拥有自己的覆盖侦听器。
override fun doubleTap() {
super.doubleTap()
/*addAction(Actions.rotateBy(-90f, .25f))*/
rotateBy(-90f)
}
我希望拼图始终跟随鼠标指针。
我找到了答案。
显然,当旋转 Actors 时,其坐标系会随之旋转。
我用这段代码解决了问题:
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)
}
如果有人有解释,我很想听听。
我正在创建一个 jigsaw puzzle game,您可以在其中拖放拼图。 我想通过双击添加 90 度的增量旋转。移动旋转的拼图时,拖动时出现奇怪的移动。
例如顺时针旋转 90 度后,再移动拼图块将不会跟随鼠标移动,而是在鼠标移动时向外螺旋旋转。
每次旋转都有自己奇怪的运动,但旋转 360 度时运动又是 o.k。
这是为什么?
问题似乎是听众 x 和 y 输入引起的。 public void touchDragged (InputEvent event, float x, float y, int pointer)
我认为在轮换演员时还需要做其他事情,但我不知道是什么...
拼图 actor 继承了 Group 并拥有自己的覆盖侦听器。
override fun doubleTap() {
super.doubleTap()
/*addAction(Actions.rotateBy(-90f, .25f))*/
rotateBy(-90f)
}
我希望拼图始终跟随鼠标指针。
我找到了答案。 显然,当旋转 Actors 时,其坐标系会随之旋转。
我用这段代码解决了问题:
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)
}
如果有人有解释,我很想听听。