SteamVR 2.x 手柄触摸3D物体(11)
通过上一章对Interactable组件有了初步的了解之后,现在来正式开始学习手柄触摸物体的交互。
一、前期准备
新建场景,删除默认相机,将Player拖拽进入场景内
新建Plane,修改为Floor,上一个黑色材质球,Transform信息如下:
场景内添加CubeA,组件信息如下
通过以上操作之后,运行游戏,当手部模型进入Cube时,Cube高亮,当手部模型离开Cube时,Cube高亮消失。
二、手柄进入、离开物体的逻辑处理
上面只是介绍了物体可以被手柄触碰的必要条件,在实际项目开发过程中,经常过监听手柄进入、离开物体的状态,比如:手柄触碰到门,门播放开门的动画等等。
1、先挂载InteractableHoverEvents组件
通过图片可以看出,该组件对于手柄进入、离开、拾取、放下进行了事件的处理
2、编写测试脚本
using UnityEngine;using Valve.VR.InteractionSystem;/// /// 物体触摸交互/// public class SteamVR_InteractTouch : MonoBehaviour{ private InteractableHoverEvents interactableHoverEvents; private void Awake() { interactableHoverEvents = GetComponent<InteractableHoverEvents>(); } private void Start() { interactableHoverEvents.onHandHoverBegin.AddListener(() => Debug.Log("开始触碰:" + transform.name)); interactableHoverEvents.onHandHoverEnd.AddListener(() => Debug.Log("结束触碰:" + transform.name)); }}
很简单,我们只要给触碰的两个事件添加监听即可。
将该组件挂载到CubeA上,运行测试。