我正在玩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的值,驾驶舱不会以另一种方式旋转,它会以相同的方式继续旋转,而不是相反的方向。
答案 0 :(得分:2)
我没有尝试过这段代码,但是如果我明白你要做什么,我建议使用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,依此类推(再次我没试过)。
您可以增加或减少速度值,以使旋转更快或更慢。