ViveFocus使用WaveVR插件获取手柄操作事件

此文的诞生一、插件必备WaveVR二、场景中放置必要的预制件三、代码获取手柄交互事件结束语

此文的诞生

入职新公司,接手旧项目,程序猿不可避免的麻烦。不巧,在下正是被一个旧VR项目卡在了怎么获取手柄事件上。网上找了很多资料,基本没有,可能是因为ViveFocus这款单手柄的设备销量不太行的原因吧。今天就把方法告诉大家,省的大家跟我走一样的弯路。 单手柄设备

一、插件必备WaveVR

这个WaveVR插件啊,Unity商城就有免费版,直接下载导入即可,在这里提一下的原因是,有很多人喜欢荡网盘资源,我想说的是像这种常用插件,大家最好还是先去Unity商城和PakageManager下找找有没有,有的话就用Unity自身的毕竟版本最好,最优。 (你要说你的Unity版本不支持那么高的版本,我想说那就另当别论了,只是建议) 下面开始正题

二、场景中放置必要的预制件

第一步,场景中放置必要的预制件这五个缺一不可。 WaveVR—确保VR视角 ControllerLoader—VR基础控制器(比如惯用手调整等) InputModuleManager—射线检测控制管理器 ButtonManager—手柄按钮生效管理 WaveVRButtons—手柄按钮配置列表

三、代码获取手柄交互事件

做完上面的准备工作,正题这就来了:

using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.EventSystems;

using UnityEngine.UI;

using wvr;//命名空间必须的

public class GamePanel : MonoBehaviour

{

Text showText;

CanvasGroup group;

private void Awake()

{

//因为最终打包为安卓给眼镜使用,所以普通的打印不够看,

//最好生成一个Text组件,交互按钮之后,将内容显示在里面

showText = transform.Find("ShowText").GetComponent();

//控制UI界面显隐

group = transform.GetComponent();

}

void Start()

{

}

private void Update()

{

//判断场景中有没有放入预制体,避免没放时报错

if (WaveVR_ButtonManager.Instance == null)

return;

//大圆盘按下

bool pressedTouchpad = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).GetPressDown(WVR_InputId.WVR_InputId_Alias1_Touchpad);

if (pressedTouchpad)

{

showText.text = "按下了Touchpad!!!";

group.alpha = 1;

}

//扳手键按下

bool pressedTrigger = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).GetPressDown(WVR_InputId.WVR_InputId_Alias1_Trigger);

if (pressedTrigger)

{

showText.text = "按下了Trigger!!!";

group.alpha = 0;

}

//圆盘上按下

bool pressedUp = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).GetPressDown(WVR_InputId.WVR_InputId_Alias1_DPad_Up);

if (pressedUp)

{

showText.text = "按下了Up!!!";

}

//中间大圆键按下,带横线那个

bool pressedMenu = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).GetPressDown(WVR_InputId.WVR_InputId_Alias1_Menu);

if (pressedMenu)

{

showText.text = "按下了Menu!!!";

}

//音量键+按下

bool pressedVolume_Up = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).GetPressDown(WVR_InputId.WVR_InputId_Alias1_Volume_Up);

if (pressedVolume_Up)

{

showText.text = "按下了Volume_Up!!!";

}

}

}

结束语

Binggo~,就这么简单!!! 原创不易,分享开发过程中的坑!!! 若对您有一定的帮助,欢迎点赞!!! 有疑问欢迎看留言!!! 天南地北兄妹情,给个赞啊行不行!!!

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: