使用交互器抓取、按住和引发
概述
Mesh Interactionables 是一个系统,用于使用 Unity 脚本配置对象,用于定义与对象或虚拟形象行为的交互。 脚本定义可使用 XRI 交互的对象的属性。 网格工具包包含可定义的不同对象类型的脚本。 当项目运行时,它将设置对象或虚拟形象行为所要执行的所有必需 prefabs 和设置。 如果想要查看在网格应用中运行时可交互对象的外观的大致预览,请务必 使用网格仿真设置播放模式。 请注意,网格应用中看到的 IK 功能在“播放模式”中使用网格仿真不可用。
网格可交互安装组件
若要使对象可交互,必须添加 网格可交互安装 组件。
在层次结构中,选择对象。
在检查器中,单击“添加组件”按钮,然后选择“网格可交互设置”。
该组件将添加其默认 的交互类型 属性设置为 Basic。 (下一部分将介绍对象类型。
可以使用父 网格可交互安装 组件设置一组对象的属性,这些对象的行为相同。 通过向每个子对象自动添加 网格交互正文 组件,这些属性将应用于运行时具有刚性体的所有子级。 可能需要手动添加 网格交互正文 ,以便通过 视觉脚本使用网格交互对象,例如交互事件或修改可操纵的目标转换。
注意:
网格可交互正文 将允许每个可交互者独立运行。
如果要启用物理,则必须将刚性体添加到对象中。
获取帮助
在 网格交互设置 和 网格可交互正文 组件中,可以单击“?”按钮导航到网格文档中的一个页面,其中包含按钮连接到的功能的帮助。
可交互对象类型
有四种对象类型:
- 基本
- Manipulable
- 可装备
- 可引发
选择对象类型:
- 在 网格可交互安装 组件中,单击 “可交互类型 ”下拉列表,然后选择四个选项之一。
基本
如上所述,这是默认类型。 当用户将鼠标悬停在对象上或选择对象时,它可以调用回调,其他脚本可以做出反应。 例如,如果你有一个用于启用另一个对象的按钮,请使用 OnSelected 回调将此可交互类型添加到该按钮,以启用该其他对象。 只需添加此类型和碰撞体即可完全交互该按钮;你不必执行任何其他操作。
注意:其他三种可交互类型--Manipulable、Equippable 和 Throwable(如下所述)具有与基本类型相同的属性,但具有其他功能。
Manipulable
可以从距离移动此类型的对象;具体而言,可以在运行时操作其转换,并在交互器光线的末尾通过空间移动它。 快捷控件可用于旋转或转换对象。 若要在网格应用中操作对象,可以打开虚拟形象手的 IK 设置以跟踪该对象。 可操纵对象不需要刚性对象,但如果希望对象具有物理功能,则应添加一个对象。
可装备
可以获取此类型的对象。 在网格术语中,我们说你“装备”你的头像手中的对象。 若要在电脑上装备对象,请单击该对象或在选定对象时按 F 。 若要在 Quest 上装备对象,在选定对象时按“控制”按钮。 可装备的对象包含用于虚拟形象手臂姿势的 IK 目标的设置,而该对象已配备。 IK 目标与头像胸部的偏移量:这将确定在对象被保存或激活时手的位置。
可引发
顾名思义,可以抓取并引发此类型的对象。 抓住后,可以通过 按鼠标左键并按住目标模式 。 这将允许你的头像的手臂跟随你的鼠标目标;若要引发对象,请释放鼠标左键。
使对象与 Visual Scripting 交互
所有 Interactionables 组件都具有可视化脚本可用的交互属性和方法,因此你可以通过无限数量的方法来使它们协同工作。 若要利用这一点,请使用 脚本图中的网格交互正文 组件,将节点与可用属性(如 OnHovered 或 OnSelected)挂钩到 OnStateChanged 节点。 例如,在按下按钮时,以下脚本图将启用柱形图,并在释放按钮时将其禁用。 只需添加脚本和碰撞器即可完全交互该按钮;你不必执行任何其他操作。
视觉对象脚本属性
对于所有可交互的正文:
- IsHovered (只读) - 本地头像是否将鼠标悬停在对象上。
- IsSelected (只读) - 是否选择任何虚拟形象。 在 MeshBrowser 中运行时,将建立网络。
- IsSelectedLocally – 本地头像是否正在选择对象。
- IsMine (只读) - 最后一个头像选择或装备对象时为 True。
对于“装备”:
- EquippedAt (只读) - 此对象装备的位置 – None、DefaultHand、RightHand、LeftHand。 在 MeshBrowser 中运行时,将建立网络。
- EquippTime (只读) - 此对象装备的时间。 在 MeshBrowser 中运行时,将建立网络。
- IsActivated (只读) - 如果此对象处于激活状态。 仅对不可引发的对象有效。 在 MeshBrowser 中运行时,将建立网络。
- IsAiming (只读) - 如果本地头像在保存此对象时处于目标状态。 仅对可引发项有效。
- IsThrowing (只读) - 如果本地头像正在主动引发对象。 仅对可引发项有效。
- IsEquipped (只读) (只读) - 如果此对象当前由虚拟形象提供。 在 MeshBrowser 中运行时,将建立网络。
- IsThrowable – 如果此对象可引发。
- ThrowVelocity – 释放对象时引发对象的速度。
对于可修改目标位置的可操作:
- 目标位置(只读):在网格交互属性中使用默认强制模式时正文的目标位置
- 目标旋转(只读):在网格可交互属性中使用默认强制模式时,正文的目标旋转
- 光线命中位置(只读):人体上交互器的光线投射命中的位置
- 光线命中旋转(只读):交互器围绕光线方向的旋转
- 修改的目标位置(读取和写入):用于通过视觉脚本设置新的目标位置。 这将替代默认目标位置。 最佳做法是重写此属性:
- 使用目标位置的状态更改。 在这种情况下,仅当交互器和新位置发生更改时,视觉对象脚本才会触发流。
- 在后期更新上使用。 如果需要在每个帧中更改目标转换,请进行后期更新,以便下一帧中立即提供新的目标转换。
- 修改的目标旋转(读取和写入):用于设置视觉对象脚本的新目标旋转。 这将替代默认目标位置。