> 文档中心 > SteamVR 2.x 手柄触摸3D物体(11)

SteamVR 2.x 手柄触摸3D物体(11)

通过上一章对Interactable组件有了初步的了解之后,现在来正式开始学习手柄触摸物体的交互。

一、前期准备

新建场景,删除默认相机,将Player拖拽进入场景内
SteamVR 2.x 手柄触摸3D物体(11)
新建Plane,修改为Floor,上一个黑色材质球,Transform信息如下:
SteamVR 2.x 手柄触摸3D物体(11)
场景内添加CubeA,组件信息如下
SteamVR 2.x 手柄触摸3D物体(11)
通过以上操作之后,运行游戏,当手部模型进入Cube时,Cube高亮,当手部模型离开Cube时,Cube高亮消失。

二、手柄进入、离开物体的逻辑处理

上面只是介绍了物体可以被手柄触碰的必要条件,在实际项目开发过程中,经常过监听手柄进入、离开物体的状态,比如:手柄触碰到门,门播放开门的动画等等。
1、先挂载InteractableHoverEvents组件
通过图片可以看出,该组件对于手柄进入、离开、拾取、放下进行了事件的处理
SteamVR 2.x 手柄触摸3D物体(11)
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上,运行测试。
SteamVR 2.x 手柄触摸3D物体(11)

房贷之家