1、动作映射,具体映射方法可参考链接:
https://blog.csdn.net/weixin_38484443/article/details/124718029?spm=1001.2014.3001.5501
2、前期准备
新建场景01-ActionListener,删除默认相机,将ViveCameraRig预制件拖入场景内
3、编写代码
新建Demo1_ActionListener脚本并挂载到ViveCameraRig上,获取动作/按键有两种方式,第一种是通过SteamVRInput来获取,好处就是项目打包出来后可随意变更动作按键设置,第二种是通过VIveInputUtility自带API来获取某个具体的按键,直接上代码:
using HTC.UnityPlugin.Vive;
using UnityEngine;
using Valve.VR;
public class Demo1_ActionListener : MonoBehaviour
{
private void Start()
{
Demo_GetAction();
}
private void Update()
{
Demo_GetKey();
}
/// <summary>
/// 获取动作
/// </summary>
private void Demo_GetAction()
{
SteamVR_Actions.htc_viu_viu_press_33.onStateDown += Htc_viu_viu_press_33_onStateDown;
SteamVR_Actions.htc_viu_viu_press_33.AddOnStateDownListener(Htc_viu_viu_press_33_onStateDown, SteamVR_Input_Sources.RightHand);
}
/// <summary>
/// 获取按键
/// </summary>
private void Demo_GetKey()
{
if(ViveInput.GetPressDown(HandRole.RightHand, ControllerButton.Grip))
{
Debug.Log("按下了右手柄握持键");
}
}
private void Htc_viu_viu_press_33_onStateDown(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource)
{
Debug.Log($"{fromSource} onstateDown {fromAction.GetShortName()}");
}
}
我们可以进入SteamVR Input界面查看htc_viu下的动作映射情况,如:viu_press_33,该动作映射扳机键,以上就是获取动作/按键的方式。