第一次玩htc vive,需要播一个vr视频,项目需求是带上头盔播视频,摘下头盔停止播放,用的
在网上查了一些办法,都不适合,比如if (XRDevice.isPresent)
{
}
再比如
if (XRDevice.userPresence == UserPresenceState.Present)
{
}
再比如
if (VRDevice.userPresence == UserPresenceState.Present)
{
}
还有这个
这些方法在新版本unity中都不实用,于是就从SteamVR(从Asset Store下载)入手,然后惊奇的发现它有一个Player预制体,
这货居然自带头盔检测
打开它的脚本,找到 protected virtual void Update()这个方法,然后在这个下面写自己的逻辑就好了
protected virtual void Update()
{
if (SteamVR.initializedState != SteamVR.InitializedStates.InitializeSuccess)
return;
if (headsetOnHead != null)
{
if (headsetOnHead.GetStateDown(SteamVR_Input_Sources.Head))//发现头盔带上了
{
Debug.Log("<b>SteamVR Interaction System</b> Headset placed on head");
video.Play();
}
else if (headsetOnHead.GetStateUp(SteamVR_Input_Sources.Head))//摘下头盔
{
Debug.Log("<b>SteamVR Interaction System</b> Headset removed");
video.Stop();
}
}
}
好了,这样就完美解决了,我的项目也结束了