【发布时间】:2019-05-17 03:46:48
【问题描述】:
我有一个航天飞机,我想在Vector3.up 和Vector3.left 上发送rotate,以便玩家可以使用航天飞机向上/向下和向左/向右看。
这是我使用的代码:
// Rotate the ship
transform.Rotate(Vector3.up, distX * rotateSpeed * Time.deltaTime, Space.Self);
transform.Rotate(Vector3.left, distY * rotateSpeed * Time.deltaTime, Space.Self);
其中distX 是旋转强度值,基于Mouse X - 轴,rotateSpeed 只是旋转速度值。
但是,如果我使用这个脚本来旋转我的船,它也会被 z 轴旋转。
我不知道它为什么这样做。这些是我的代码中(目前)唯一与 Shuttle 旋转有关的行。
我尝试过将Vector3.up 替换为transform.up 和Vector3.left 替换为transform.right(在第二种情况下也将distY 更改为-distY),但也没有用。
【问题讨论】:
-
您可能应该开始使用 四元数 而不是欧拉角旋转,原因如下。
-
@MickyD 类似于:transform.rotation = new Quaternion(transform.rotation.x + (distX * rotateSpeed * Time.deltaTime), transform.rotation.y + (distY * rotateSpeed * Time.deltaTime) ), 0, 变换.旋转.w); ? - 我得到了一些非常奇怪的结果