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上,运行测试。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38484443/article/details/124719151