【发布时间】:2017-01-29 10:37:46
【问题描述】:
我正在创建一个游戏,您可以在其中使用旋转遥控器(它只知道它的旋转)来驾驶汽车。我在将Quaternion(这是控制器的输出)转换为方向盘旋转时遇到问题。这是我尝试过的所有东西中最接近工作形式的方法(transform.localRotation 是方向盘的旋转):
void Update() {
transform.localRotation = GvrController.Orientation;
transform.localRotation = new Quaternion(0.0f, 0.0f, transform.localRotation.z, transform.localRotation.w);
}
这显然不是一个好的解决方案,而且效果也不太好。我正在尝试做的事情有一个非常简单的可视化: 控制器的默认方向如图所示朝前。
基本上整个问题是如何跳过除负责旋转的轴以外的所有轴(图片上的轴 1)并将其应用于方向盘。你知道我该怎么做吗?
编辑: 因为如果没有适当的可视化就很难解释这个问题,我给我的控制器拍照并在上面画了轴。
这是控制器的默认方向:
这就是它在轴上标记的方式:
【问题讨论】:
-
如果您提供一些输入和预期输出以更好地了解控制器为您提供的旋转,这可能会有所帮助。
-
是的,这些调试起来很麻烦。我建议以近似已知的预期输出角度记录测试运行,然后您可以在任何编程环境(如 Matlab 或 Python Spyder)中“逆向工程”正确的公式,然后将其移植到所需的语言/框架。
-
能否给我们一段欧拉转换的录音?
标签: c# unity3d quaternions