我无法在 Unity VR 示例场景的播放模式下移动光标
I'm unable to move the cursor in play mode in the Unity VR example scene
我在场景 'Shooter 360' 中使用了来自 Unity https://www.assetstore.unity3d.com/en/#!/content/51519
的 VR 样本(尽管我已经尝试过其他场景)。
我在 Mac 上,在 XR 设置中我同时支持 'Mock HMD - HTC' 和 'Oculus SDK'。
当我按下“播放”时,我根本无法移动光标或与 GUI 交互。有什么建议吗?
默认情况下,您使用的 SDK 会在运行时旋转相机(Cardboard、Oculus、HTC Vive 等)。
您可以使用脚本在编辑模式下旋转相机。这是一个示例,只需将此脚本分配给您的相机并在编辑器中移动鼠标时按 Left Ctrl window:
public class EditorCameraController : MonoBehaviour
{
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
private float rotationX = 0F;
private float rotationY = 0F;
private Quaternion originalRotation;
void Start()
{
originalRotation = transform.localRotation;
}
void Update ()
{
if (Input.GetKey(KeyCode.LeftControl))
{
rotationX += Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationX = ClampAngle(rotationX, minimumX, maximumX);
rotationY = ClampAngle(rotationY, minimumY, maximumY);
Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, -Vector3.right);
transform.localRotation = originalRotation * xQuaternion * yQuaternion;
}
}
public static float ClampAngle(float angle, float min, float max)
{
if (angle < -360F)
angle += 360F;
if (angle > 360F)
angle -= 360F;
return Mathf.Clamp(angle, min, max);
}
}
我在场景 'Shooter 360' 中使用了来自 Unity https://www.assetstore.unity3d.com/en/#!/content/51519
的 VR 样本(尽管我已经尝试过其他场景)。
我在 Mac 上,在 XR 设置中我同时支持 'Mock HMD - HTC' 和 'Oculus SDK'。
当我按下“播放”时,我根本无法移动光标或与 GUI 交互。有什么建议吗?
默认情况下,您使用的 SDK 会在运行时旋转相机(Cardboard、Oculus、HTC Vive 等)。
您可以使用脚本在编辑模式下旋转相机。这是一个示例,只需将此脚本分配给您的相机并在编辑器中移动鼠标时按 Left Ctrl window:
public class EditorCameraController : MonoBehaviour
{
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
private float rotationX = 0F;
private float rotationY = 0F;
private Quaternion originalRotation;
void Start()
{
originalRotation = transform.localRotation;
}
void Update ()
{
if (Input.GetKey(KeyCode.LeftControl))
{
rotationX += Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationX = ClampAngle(rotationX, minimumX, maximumX);
rotationY = ClampAngle(rotationY, minimumY, maximumY);
Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, -Vector3.right);
transform.localRotation = originalRotation * xQuaternion * yQuaternion;
}
}
public static float ClampAngle(float angle, float min, float max)
{
if (angle < -360F)
angle += 360F;
if (angle > 360F)
angle -= 360F;
return Mathf.Clamp(angle, min, max);
}
}