【发布时间】:2018-10-27 23:08:58
【问题描述】:
我正在开发一个简单的 AR Vuforia 应用程序。如何通过一根手指滑动实现对象沿所有三个轴的旋转?
我当前使用的代码有一个错误:对象的旋转取决于其局部轴。例如,如果我从正面看对象,一切正常,但如果我从背面看对象,手指向上滑动会使其向下旋转,反之亦然。
这是这个脚本:
public float rotSpeed = 30f;
void OnMouseDrag()
{
float rotX = Input.GetAxis("Mouse X")*rotSpeed*Mathf.Deg2Rad;
float rotY = Input.GetAxis("Mouse Y")*rotSpeed*Mathf.Deg2Rad;
transform.Rotate(Vector3.up, -rotX);
transform.Rotate(Vector3.right, -rotY);
}
这不是我需要的,我怎样才能根据手指滑动方向旋转对象,而不管我从哪个角度看它?
更新
一个简单的非AR示例,可以帮助您理解我需要的是iOS游戏“Space Frontier 2”。火箭成功发射后,它降落在星球上,您可以用手指滑动来旋转星球。
这里是视频演示:https://youtu.be/OiNPP1WNIAI
【问题讨论】:
-
所以这就是我想到的——你想如何通过作用在物体上的单一力来实现力?要在多个轴上完成运动 - 我们需要多个力,例如,1 个模拟力(可能使用设备的旋转/倾斜/方向/罗盘方向?)和单指滑动。想想物理对象——如果我抓住我现在放在桌子上的手机,并沿着 X 轴移动它(例如,平行于我的桌子,甚至对角线)——在我开始扭动我的手机之前,它永远不会使用第三轴手腕;为它添加额外的动作。
-
@KasemO 感谢您提出一个有趣的想法,尽管我还不能说完全理解它。我不需要移动手机来旋转屏幕上的对象,因为这是一个 AR 应用程序,用户将在标记上方查看 3D 模型。我在视频演示中添加了一个小的 UPD,它可能会帮助您理解我的意思。再次感谢你们!
-
你试过我的答案了吗?它结构紧凑,适用于所有情况。
-
@ThomasHilbert 非常感谢,它运行良好!
标签: c# unity3d augmented-reality vuforia