第一次玩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();
}
}
}
好了,这样就完美解决了,我的项目也结束了
|