将游戏对象左右倾斜



我正在玩Google Cardboard。我坐在驾驶舱里,可以毫无问题地环顾四周。

现在我想把我的驾驶舱左右倾斜,给人一种更真实的感觉,而不仅仅是静止不动。

到目前为止,我有这个:

using UnityEngine;
using System.Collections;
public class Tilt : MonoBehaviour 
{
    float speed = 0.25f;
    void Update()
    {
        Tilter ();
    }
    void Tilter()
    {
        if (transform.rotation.z < 5f) {
            transform.Rotate (new Vector3 (0f, 0f, speed));
        }
        if (transform.rotation.z > 5f)
            transform.Rotate (new Vector3 (0f, 0f, -speed));
    }
}

这开始按预期将驾驶舱向左倾斜,但一旦旋转大于值5,驾驶舱就不会朝另一个方向旋转,而是保持相同的方向旋转,而不是朝相反的方向旋转。

我还没有尝试过这个代码,但如果我理解你想要做什么,我建议使用Mathf.Sin和Time.Time来连续获得-1到1范围内的值,然后乘以驾驶舱的旋转范围。例如:

using UnityEngine;
using System.Collections;
public class Tilt : MonoBehaviour 
{
    float speed = 1.0f;
    float rotationAngle = 45;
    void Update()
    {
        Tilter ();
    }
    void Tilter()
    {
        float rotationZ = rotationAngle * Mathf.Sin(Time.time * speed);
        transform.Rotate (new Vector3 (0f, 0f, rotationZ ));
    }
}

这个例子应该慢慢地将你的驾驶舱从0旋转到45,然后再旋转到0,再旋转到-45,再旋转回0,以此类推(我也没有尝试过)。

可以增加或减少速度的值以使旋转更快或更慢。

最新更新