围绕Vector3.up和Vector3.left旋转时,请勿旋转z轴

时间:2018-12-16 16:09:13

标签: c# unity3d

我有一个要在rotateVector3.upVector3.left进行的航天飞机,以便玩家可以用航天飞机向上/向下和向左/向右看。

这是我使用的代码:

// 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轴旋转。

我不知道为什么要这么做。这是我代码中仅有的几行与航天飞机旋转有关的事情。

我尚未尝试将Vector3.up替换为transform.up,将Vector3.left替换为transform.right(第二次也将distY更改为-distY情况),但也没有用。

1 个答案:

答案 0 :(得分:0)

您可以将0的欧拉值分配给z,就像这样可以限制z轴上的旋转:

    distX = Input.GetAxis("Vertical") * rotateSpeed * Time.deltaTime;
    distY = Input.GetAxis("Horizontal") * rotateSpeed * Time.deltaTime;       
    transform.rotation = Quaternion.Euler(distX, distY, 0f);