我正在制作一个游戏,你需要使用旋转遥控器(它只知道自己的旋转)来驾驶汽车。我遇到了一个问题,就是将四元数
(这是控制器的输出)转换为方向盘的旋转角度。以下是我尝试过的所有方法中最接近有效的代码(transform.localRotation是方向盘的旋转):
void Update() {
transform.localRotation = GvrController.Orientation;
transform.localRotation = new Quaternion(0.0f, 0.0f, transform.localRotation.z, transform.localRotation.w);
}
这显然不是一个好的解决方案,效果也不太好。我想做的事情有一个非常简单的可视化形式:
![enter image description here](https://istack.dev59.com/ASj5c.webp)
基本上问题的关键在于如何跳过除了负责旋转的轴(图中的轴1)之外的所有轴,并将其应用于方向盘。你知道怎么做吗?
编辑:因为没有适当的可视化,很难解释问题,所以我拍了照片并在上面标出了轴线。
这是控制器的默认方向:
![enter image description here](https://istack.dev59.com/BqyX3.webp)
![enter image description here](https://istack.dev59.com/zXoOj.webp)