【发布时间】:2017-09-17 18:58:56
【问题描述】:
我正在尝试制作一个分为 6 个部分的旋转轮。每个部分都标有一个以该部分为中心的游戏对象。玩家旋转轮子后,它将旋转直到开始停止,然后轮子根据所选部分移动并停在中心(随机)。我使用以下代码将轮子向 X 轴上的 0 旋转。此代码可以正常工作并且轮子可以正常旋转,但前提是所选部分位于正 X 轴上。
float rotateFloat = (((randomReward + 1) * 60) - 30) - transform.rotation.z;
Quaternion targetRotation = Quaternion.Euler(new Vector3(0, 0, rotateFloat));
transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, f_difX * Time.deltaTime);
我做了一些挖掘,发现Quaternion.RotateTowards()找到了最接近目标的路径并使用该方向旋转(这导致旋转方向出现问题)。
示例(下图):玩家滑动并随机奖励(旋转轮上的数字 5),然后轮开始旋转。当车轮减速时,它开始向中心移动。然后它会沿着滑动的方向停止旋转,并且会向另一侧旋转(因为离中心的距离离左侧更近)。
无论哪个更靠近中心,我如何将其设置为遵循相同的滑动方向。也许如果有更好的方法可以做到这一点,请赐教。谢谢。
【问题讨论】:
标签: c# unity3d rotation swipe direction