如何在 Unity3D Google Cardboard 中限制头部旋转?
How do I limit head rotation in Unity3D Google Cardboard?
我无法限制旋转。我已将此脚本添加到 Cardboard Main 对象、Head 对象和 Main Camera 对象,但没有成功。这是我目前所拥有的,它不会停止旋转。
void FixedUpdate () {
if (transform.eulerAngles.y > 60 && transform.eulerAngles.y < 190)
{
transform.eulerAngles = new Vector3(transform.eulerAngles.x, 60, transform.eulerAngles.z);
}
if (transform.eulerAngles.y > 190 && transform.eulerAngles.y < 300)
{
transform.eulerAngles = new Vector3(transform.eulerAngles.x, 300, transform.eulerAngles.z);
}
}
提前致谢!
google 纸板 SDK 具有设置每帧头部方向的代码。即使你设置了你的,他们也会在执行时覆盖它。如果您想调整头部运动,请通过修改 Cardboard 脚本来实现。
还有,你不应该做这样的事情。在 VR 应用程序中强制用户进行一些相机移动是让他们迷失方向或恶心的简单方法。你想通过限制头部的可能方向来实现什么?
在 CardboardHead.cs 中,在 UpdateHead() 下添加以下 bool updateEarly
:
public float limit = 0.5f;
然后更改:
transform.localRotation = rot;
至:
transform.localRotation = Quaternion.Slerp(rot, Quaternion.Euler(Vector3.forward), limit);
这将为您提供头部对象的限制参数,您可以使用该参数来限制 Cardboard 旋转的灵敏度。
我无法限制旋转。我已将此脚本添加到 Cardboard Main 对象、Head 对象和 Main Camera 对象,但没有成功。这是我目前所拥有的,它不会停止旋转。
void FixedUpdate () {
if (transform.eulerAngles.y > 60 && transform.eulerAngles.y < 190)
{
transform.eulerAngles = new Vector3(transform.eulerAngles.x, 60, transform.eulerAngles.z);
}
if (transform.eulerAngles.y > 190 && transform.eulerAngles.y < 300)
{
transform.eulerAngles = new Vector3(transform.eulerAngles.x, 300, transform.eulerAngles.z);
}
}
提前致谢!
google 纸板 SDK 具有设置每帧头部方向的代码。即使你设置了你的,他们也会在执行时覆盖它。如果您想调整头部运动,请通过修改 Cardboard 脚本来实现。
还有,你不应该做这样的事情。在 VR 应用程序中强制用户进行一些相机移动是让他们迷失方向或恶心的简单方法。你想通过限制头部的可能方向来实现什么?
在 CardboardHead.cs 中,在 UpdateHead() 下添加以下 bool updateEarly
:
public float limit = 0.5f;
然后更改:
transform.localRotation = rot;
至:
transform.localRotation = Quaternion.Slerp(rot, Quaternion.Euler(Vector3.forward), limit);
这将为您提供头部对象的限制参数,您可以使用该参数来限制 Cardboard 旋转的灵敏度。