gpt4 book ai didi

java - LibGDX 图像旋转问题

转载 作者:行者123 更新时间:2023-12-02 06:21:03 25 4
gpt4 key购买 nike

旋转图像(图像类)时遇到一个小问题,我需要帮助。

这个想法是旋转球形图像,移动是通过手指的触摸和拖动来实现的,可能是顺时针方向,也可能不是顺时针方向,到目前为止,这是正确的。

我希望当球体的角度为 90 的倍数时发生一些事情,问题是当我用手指旋转球体时,有时速度太快,以至于球体的角度并不总是经过该倍数90,例如,如果它是 87,当我移动手指时,它会变为 94,而不会触及 90。

这是我通过拖动旋转的代码

tapeImage.addListener(new DragListener() {
int initDegree;

@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
initDegree = (int) new Vector2(x, y).sub(new Vector2(tapeImage.getOriginX(), tapeImage.getOriginY())).angle();
return true;
}

@Override
public void touchDragged(InputEvent event, float x, float y, int pointer) {
int touchDegree = (int) (new Vector2(x, y).sub(new Vector2(tapeImage.getOriginX(), tapeImage.getOriginY()))).angle();
tapeImage.rotateBy(touchDegree - initDegree);
}
});

我知道捕获此事件的最佳方法是将旋转增加 1 但这不会遵循手指速度,所以我想知道是否有更好的方法来捕获旋转事件,感谢您的帮助。

更新

我制作了一个快速图像,以便能够轻松地表示我需要的内容: enter image description here

情况:(灰色球体代表黄色球体当前角度)我顺时针转动黄色转盘,当黄色球体角度为90的倍数时,会发生事件x,可以保留在事件发生时旋转球体,因此如果继续旋转,您将到达下一个 90 的倍数,其中相同的事件将再次发生,我使用rotateBy 方法,该方法将一定角度添加到对象的当前角度,即问题是,如果我将球体移动得太快,它的角度会跳跃,从而阻止其达到 90 的倍数,正如我之前所说,这可以通过简单地增加 1 乘 1 来纠正,但球体会比我的手指慢得多.

我需要的是当球体的角度看着这 4 个侧面之一时发生的事件,无论您移动球体的速度有多快,也许使用 90 的倍数检测它并不是最好的了解方法角度在哪一侧,或者我应该使用除rotateBy之外的方法?

最佳答案

我建议你存储之前的角度并比较之前和新的角度,看看是否超过了90的倍数:

int previousDegree = 0;
@Override
public void touchDragged(InputEvent event, float x, float y, int pointer) {
int touchDegree = (int) (new Vector2(x, y).sub(new Vector2(tapeImage.getOriginX(), tapeImage.getOriginY()))).angle();
tapeImage.rotateBy(touchDegree - initDegree);
if(previousDegree < 90 && tapeImage.getRotation() >= 90) {
// 90 degrees passed, put code
} else if (previousDegree < 180 && tapeImage.getRotation() >= 180) {
// 180 degrees passed, put code
} else if (previousDegree < 270 && tapeImage.getRotation() >= 270) {
// 270 degrees passed, put code
} else if (previousDegree < 360 && tapeImage.getRotation() >= 360) {
// 360 degrees passed, put code
}
previousDegree = touchDegree;
}

关于java - LibGDX 图像旋转问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60916048/

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