admin管理员组

文章数量:821324

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

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

一、前期准备

新建场景,删除默认相机,将Player拖拽进入场景内

新建Plane,修改为Floor,上一个黑色材质球,Transform信息如下:

场景内添加CubeA,组件信息如下

通过以上操作之后,运行游戏,当手部模型进入Cube时,Cube高亮,当手部模型离开Cube时,Cube高亮消失。

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

上面只是介绍了物体可以被手柄触碰的必要条件,在实际项目开发过程中,经常过监听手柄进入、离开物体的状态,比如:手柄触碰到门,门播放开门的动画等等。
1、先挂载InteractableHoverEvents组件
通过图片可以看出,该组件对于手柄进入、离开、拾取、放下进行了事件的处理

2、编写测试脚本

using UnityEngine;
using Valve.VR.InteractionSystem;/// <summary>
/// 物体触摸交互
/// </summary>
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 2x 手柄触摸3D物体(11)