Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Libgdx 如何修复TouchDrawed中的拖动运动?_Libgdx - Fatal编程技术网

Libgdx 如何修复TouchDrawed中的拖动运动?

Libgdx 如何修复TouchDrawed中的拖动运动?,libgdx,Libgdx,我正在创建一个可以拖放拼图块的程序。 我想在双击时增加90度的旋转。移动旋转的拼图块时,拖动时会出现奇怪的移动 e、 g.将其顺时针旋转90度,然后移动,拼图块将不会跟随鼠标,而是在任何鼠标移动时以向外螺旋旋转 每个旋转都有自己的奇怪运动,但当旋转360度时,运动又正常了 为什么会这样 似乎是侦听器的x和y输入导致了问题。public void touchInputEvent事件,浮点x,浮点y,int指针 我认为当轮换演员时,还需要做一些其他的事情,但我不知道是什么 继承组并具有自己的重写侦听

我正在创建一个可以拖放拼图块的程序。 我想在双击时增加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度的,我不确定我的算法是否能以较小的增量工作。一个更好的解决方案可能仍然存在。