我正在玩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,以此类推(我也没有尝试过)。
可以增加或减少速度的值以使旋转更快或更慢。