第 09 课
实现文物的Socket交互
本课将使用 XR Socket Interactor,也就是“XR 插槽交互器”,为文物建立固定归位点。你还会解决归位后轮廓持续显示、吸附姿态错误和文物容易被碰落等问题。
让文物轻松回到准确位置
为每件文物建立固定归位点,让体验者只需把文物放进大致范围,系统就能自动对齐位置和朝向,并保持稳定。
学完你将能够
学习目标
- 解释插槽交互器与可见展台之间的区别。
- 创建插槽交互器,并设置合适的球形感应范围。
- 根据半透明预览判断文物能否被当前归位点接收。
- 使用临时父子关系和局部坐标保存文物的准确位置。
- 根据文物是否具有附着点,选择正确的对齐对象。
- 使用选择进入与选择离开事件控制插槽的工作状态。
- 调整吸附过渡时间,在速度与视觉稳定之间取得平衡。
- 为三个文物建立独立归位点,并处理错误吸附和轮廓异常。
开始操作前
准备工作
- 打开上一课保存的主场景,确认三个文物都能被左右手抓取。
- 确认每个文物都具有碰撞体、刚体和可抓取组件。
- 确认文物被手柄指向时会显示轮廓,手柄离开后轮廓能够消失。
- 确认需要固定抓取姿态的文物已经设置 Attach Transform,也就是“附着点”。
- 保存当前场景;本课每完成一个文物的归位设置,都再次保存。
本课学习路线
按照学习模块逐步完成
每个模块都包含理解、跟随操作和独立实践。把精确摆放变成接近即可归位
认识文物归位插槽
归位插槽不是看得见的展台模型,而是固定在场景中的隐形吸附区域。它负责发现、接收、对齐并保持文物。为什么文物需要自动归位
没有归位机制时,体验者需要手动把文物放回原来的位置和角度。多次抓取后,文物容易停在展台边缘、互相碰撞,甚至掉到展台下面。
归位插槽把“必须精确对准”变成“只要放进大致范围”。它包含感应范围、目标位置、目标朝向、选择逻辑和吸附预览。
- 展台是体验者能够看到的三维模型。
- 插槽交互器是放在展台附近、负责接收文物的游戏对象。
- 二者通常位于相同区域,但承担不同职责。
归位插槽的工作过程
从文物接近到再次取走,插槽会经历完整的交互循环。
左右滑动表格,可查看完整内容
| 阶段 | 体验者的动作 | 插槽的行为 |
|---|---|---|
| 等待 | 文物尚未靠近 | 保持可接收状态 |
| 悬停 | 文物进入感应范围 | 显示目标位置的半透明预览 |
| 释放 | 体验者松开抓取键 | 自动选择文物 |
| 吸附 | 文物交给插槽 | 对齐目标位置和姿态 |
| 固定 | 文物已经归位 | 保持选择,不易被普通碰撞推开 |
| 取走 | 体验者再次抓取文物 | 结束选择并把文物交给手柄 |
三类对象怎样配合
手柄与插槽都是交互器,但它们发起交互的方式不同。
左右滑动表格,可查看完整内容
| 对象 | 类型 | 主要作用 |
|---|---|---|
| 左手、右手和射线 | Interactor 交互器 | 跟随体验者移动,通过按键抓取和移动文物 |
| 文物 | Interactable 可交互对象 | 被手柄或插槽选择 |
| 展台归位点 | Socket Interactor 插槽交互器 | 固定在场景中,自动接收并保持文物 |
为什么吸附也属于选择状态
Select 可以理解为“选择或接管”。手柄抓取时,手柄交互器正在接管文物;插槽吸附时,插槽交互器同样取得文物的控制权。
因此,插槽开始吸附对应 Select Entered,也就是“选择进入”;文物被取走对应 Select Exited,也就是“选择离开”。
归位插槽还可以用在哪里
它的本质是把可交互对象放入预设位置。
左右滑动表格,可查看完整内容
| 应用场景 | 归位插槽代表什么 |
|---|---|
| 密室逃脱 | 钥匙孔、机关槽或拼图位置 |
| 设备维修 | 电池仓、零件安装位或工具架 |
| 实验教学 | 试管架、仪器接口或样品位置 |
| 武器系统 | 弹匣槽、装备栏或挂载点 |
| 物品整理 | 货架位置、收纳盒或展示台 |
先体验手动归还的困难
运行场景,分别抓起三个文物并尝试手动放回原位。
- 观察位置是否容易与原来完全一致。
- 观察文物正面、把手或壶口方向是否容易恢复。
- 观察文物之间是否会互相碰撞或跌落。
- 能够说出至少两个需要归位插槽的理由。
先让插槽能够发现并接收文物
创建插槽并观察吸附提示
球形触发区域负责感应文物,半透明模型负责提示归位位置。先在空旷处观察完整效果,再把插槽移动到展台。创建 XR 插槽交互器
- 01
在层级窗口空白处单击右键。
- 02
选择 XR → Socket Interactor。
- 03
确认新对象包含 Transform、Sphere Collider 和 XR Socket Interactor。
- 04
给对象改一个能够说明对应文物的名称。
球形碰撞体是插槽的感应范围
Sphere Collider 是“球形碰撞体”。当文物碰撞体进入这个区域后,插槽才能发现文物、判断是否允许放入、显示吸附预览,并在松手后接管文物。
Is Trigger 表示“作为触发区域”,应保持勾选。触发区域只检测进入和离开,不会像实体碰撞体一样把靠近的文物弹开。
调整合适的感应范围
- 01
选择插槽,在球形碰撞体中点击 Edit Collider。
- 02
拖动控制点调整半径。
- 03
按住 Alt 可以围绕中心对称缩放。
- 04
让文物接近展台时容易进入,但不要覆盖相邻展台。
感应范围大小带来的影响
范围不是越大越好,要兼顾易用性和准确性。
左右滑动表格,可查看完整内容
| 范围设置 | 体验结果 |
|---|---|
| 太小 | 体验者必须非常精确,失去辅助归位的意义 |
| 合适 | 接近展台即可吸附,又不会干扰邻近对象 |
| 太大 | 文物尚未靠近目标就被吸走,甚至被错误插槽接收 |
在空旷位置观察吸附预览
- 01
暂时把插槽放到容易观察的位置。
- 02
运行场景并抓起一个文物。
- 03
缓慢靠近球形感应范围。
- 04
观察目标位置出现的半透明文物。
- 05
在感应范围内松开抓取键,观察吸附结果。

紫色半透明模型表示文物松手后的目标位置;黄色外轮廓表示当前文物处于悬停状态,两种反馈来自不同组件。
点击图片可以查看完整截图不要混淆两套视觉反馈
一个提示当前目标,一个提示归位结果。
左右滑动表格,可查看完整内容
| 视觉效果 | 来源 | 表达的信息 |
|---|---|---|
| 文物外侧黄色轮廓 | 文物的 Outline 轮廓组件 | 当前文物正处于悬停状态 |
| 目标位置半透明模型 | 插槽的 Hover Mesh 吸附预览 | 文物松手后将被放到这里 |
吸附预览与接收范围相关属性
这些设置共同决定文物能否进入和怎样提示。
左右滑动表格,可查看完整内容
| 属性 | 中文理解 | 作用 |
|---|---|---|
| Show Interactable Hover Meshes | 显示悬停预览 | 在目标位置显示文物的半透明网格 |
| Hover Mesh Material | 允许放入的预览材质 | 插槽可以接收文物时使用 |
| Can't Hover Mesh Material | 不能放入的预览材质 | 插槽已占用或不能接收文物时使用 |
| Hover Scale | 预览比例 | 调整半透明模型的显示大小 |
| Interaction Layer Mask | 交互层遮罩 | 决定哪些可交互文物能够被插槽接收 |
建立第一个可用的感应区域
让文物在合适距离进入插槽范围,并能在松手后被接收。
- 球形碰撞体保持 Is Trigger 勾选。
- 范围容易进入,但不会覆盖相邻展台。
- 文物进入后显示半透明目标预览。
- 插槽占用后,其他文物靠近会显示不能接收的提示。
- 交互层只允许预期文物进入。
用局部坐标准确记录原始摆放
精确匹配文物位置与姿态
手动拖动很难同时匹配位置和三个旋转角度。把插槽临时放到文物下面并归零,可以准确复制原始姿态。局部坐标与世界坐标
理解父子关系后,归零操作才不会混淆。
左右滑动表格,可查看完整内容
| 坐标类型 | 表示什么 |
|---|---|
| 局部坐标 | 当前对象相对于父对象的位置和旋转 |
| 世界坐标 | 当前对象在整个场景中的位置和旋转 |
为什么临时设为子物体后归零
插槽成为文物子物体后,Position 为 0, 0, 0 表示它与父物体原点重合;Rotation 为 0, 0, 0 表示它与父物体朝向一致。
插槽重新移回场景根层级时,属性值会变成世界坐标,但画面中的位置与朝向保持不变,因此可以准确记录文物原始摆放。
对齐没有附着点的普通文物
- 01
把插槽临时拖到文物顶层对象下面。
- 02
选择插槽,把 Position 和 Rotation 全部设为 0。
- 03
保持 Scale 为 1, 1, 1。
- 04
把插槽拖回场景根层级。
- 05
确认插槽不再是文物的子物体。
- 06
只调整球形感应半径,不再随意改变插槽位置和旋转。

插槽临时作为文物子物体时,把局部位置和旋转全部归零,缩放保持为 1。归零后必须移回场景根层级。
点击图片可以查看完整截图带附着点的文物要对齐附着点
有些文物使用 Attach Transform,也就是“附着点”,修正抓取时的位置和朝向。插槽吸附时同样需要把文物附着点与插槽吸附点对齐。
如果仍按文物根对象归零,文物可能位置大致正确但旋转错误,例如壶口、把手或正面朝向不符合原始摆放。
对齐已经设置附着点的文物
- 01
在可抓取组件中确认 Attach Transform 引用的对象。
- 02
在层级窗口找到这个附着点。
- 03
创建新的插槽,并暂时拖到附着点下面。
- 04
把插槽 Position 和 Rotation 设为 0,Scale 保持 1, 1, 1。
- 05
把插槽移回场景根层级。
- 06
运行场景,观察文物归位后的正面、把手和底部位置。
两种文物的对齐对象
先看文物是否设置了附着点,再决定插槽放到哪里归零。
左右滑动表格,可查看完整内容
| 文物设置 | 插槽临时放置位置 | 对齐结果 |
|---|---|---|
| 没有 Attach Transform | 文物顶层对象下面 | 文物根位置和根朝向与插槽对齐 |
| 已经设置 Attach Transform | 附着点对象下面 | 文物的有效抓取姿态与插槽对齐 |
分别对齐两种文物
选择一个普通文物和一个带附着点的文物,使用对应方法建立归位点。
- 普通文物使用根对象归零法。
- 带附着点文物使用附着点归零法。
- 两个插槽最终都回到场景根层级。
- 文物抓走再放回后,位置和朝向与课程开始时一致。
归位后停止悬停,取走后恢复接收
控制归位后的反馈与吸附速度
插槽吸附后仍是文物的交互器,可能让黄色轮廓持续显示。通过选择事件切换插槽工作状态,可以完成稳定循环。为什么文物归位后仍显示轮廓
上一课的轮廓会在任意交互器悬停时显示。插槽吸附文物后仍然感应并选择范围内的文物,因此黄色轮廓可能一直存在。
只关闭轮廓只能隐藏画面结果;调整插槽工作状态才能处理持续悬停的原因。
Socket Active 工作状态
这里改变专门的工作开关,不关闭整个组件。
左右滑动表格,可查看完整内容
| 值 | 中文理解 | 实际表现 |
|---|---|---|
| True | 插槽处于工作状态 | 正常感应、悬停并尝试选择文物 |
| False | 插槽暂停工作 | 暂停新的插槽交互活动,停止不需要的持续反馈 |
选择事件与工作状态
这次配置的是插槽自己的交互器事件。
左右滑动表格,可查看完整内容
| 事件 | 发生时机 | 设置值 |
|---|---|---|
| Select Entered | 插槽刚刚吸附文物 | Socket Active = False |
| Select Exited | 文物被手柄从插槽取走 | Socket Active = True |
配置吸附后暂停、取走后恢复
- 01
选择插槽对象,在 XR Socket Interactor 中保持 Keep Selected Target Valid 启用。
- 02
展开 Interactor Events,找到 Select Entered。
- 03
添加事件并把当前插槽拖入对象栏。
- 04
选择 XRSocketInteractor → bool socketActive,不勾选参数,让值为 False。
- 05
在 Select Exited 中重复添加当前插槽。
- 06
选择相同属性并勾选参数,让值为 True。
- 07
保存场景。

选择进入事件的复选框不勾选,表示 False;选择离开事件勾选,表示 True。两个事件都必须引用当前插槽。
点击图片可以查看完整截图完整归位状态变化
按时间顺序观察插槽、文物和轮廓。
左右滑动表格,可查看完整内容
| 时刻 | 插槽状态 | 文物状态 | 轮廓表现 |
|---|---|---|---|
| 文物尚未靠近 | 工作 | 自由或被手柄抓取 | 按普通悬停变化 |
| 文物进入范围 | 工作 | 插槽正在悬停 | 显示轮廓和吸附预览 |
| 插槽完成选择 | 暂停 | 文物已经归位 | 持续悬停停止,轮廓消失 |
| 手柄取走文物 | 恢复工作 | 文物交给手柄 | 插槽再次等待接收 |
调整吸附过渡时间
Attach Ease In Time 表示文物被交互器选择后,逐渐移动到吸附位置所用的时间,单位是秒。这个参数位于文物的可抓取组件中,因此也可能影响手柄开始抓取时的过渡。
数值太大时吸附显得拖沓;数值太小时,手柄与插槽交接可能出现瞬间跳动。应在头戴设备中比较后选择。
吸附过渡时间的体验差异
不要把同一个极小数值机械应用到所有文物。
左右滑动表格,可查看完整内容
| 时间 | 体验 |
|---|---|
| 0 秒 | 没有过渡,立即对齐,可能出现明显跳动 |
| 0.01~0.02 秒 | 几乎立即吸附,需要观察交接是否稳定 |
| 0.05~0.15 秒 | 有短暂平滑过渡,通常更容易获得稳定效果 |
| 更大 | 吸附过程较慢,可能显得拖沓 |
完成一次可重复的归位循环
比较三个吸附时间,并确认轮廓和插槽工作状态正确恢复。
- 启动后文物没有持续黄色轮廓。
- 文物进入范围时出现轮廓和半透明预览。
- 松手后文物准确对齐,归位后轮廓消失。
- 再次抓走文物后,插槽能够重新接收。
- 分别比较 0.15、0.05 和 0.02 秒,选择视觉稳定的时间。
快速复用设置,同时保持每个归位点独立
完成三个文物并整理场景
可以复制已经完成的插槽,但每件文物的位置、姿态、感应范围和事件引用都必须重新确认。复制并重新配置剩余插槽
- 01
使用 Ctrl + D 复制第一个插槽,并按对应文物重新命名。
- 02
确认选择进入和选择离开事件引用当前插槽自身。
- 03
根据新文物是否具有附着点,选择正确节点进行归零。
- 04
按新文物大小重新调整球形感应范围。
- 05
确认交互层只接收预期对象。
- 06
分别运行并单独观察两个新归位点。
复制后必须重新确认
复制只节省重复设置时间,不能代替对象级调整。
左右滑动表格,可查看完整内容
| 项目 | 确认内容 | 错误表现 |
|---|---|---|
| 名称 | 能够看出对应哪件文物 | 层级难以理解 |
| 目标位置与姿态 | 按根对象或附着点重新归零 | 归位位置或旋转错误 |
| 事件对象 | 选择事件引用当前插槽自身 | 一个文物触发另一个插槽 |
| 感应半径 | 适合当前文物和展台间距 | 过早吸附或难以进入 |
| 交互层 | 只接收预期文物 | 错误文物被吸附 |
| 吸附时间 | 符合当前文物大小与体验 | 吸附拖沓或跳动 |
保持自由抓取时的碰撞稳定
插槽固定文物时,文物处于被选择状态,不容易被普通碰撞推落。文物被手柄抓走后,仍需依靠速度跟踪、刚体和实体碰撞体避免穿过展台与墙面。
请确认三个文物的 Movement Type 都是 Velocity Tracking,也就是“速度跟踪”,并且文物、展台和墙面碰撞范围正确。
把三个插槽归入统一父对象
- 01
在层级窗口创建空对象,把位置和旋转归零、缩放保持 1。
- 02
把空对象命名为 Sockets。
- 03
把三个插槽拖到 Sockets 下面。
- 04
确认归类后三个插槽的世界位置没有变化。
- 05
让每个名称都能说明对应文物。
- 06
保存场景。
常见现象与处理方法
根据现象找到对应设置,再重新完成归位循环。
左右滑动表格,可查看完整内容
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| 插槽跟着文物移动 | 归零后没有解除父子关系 | 把插槽移回场景根层级 |
| 位置正确但旋转错误 | 带附着点文物按根对象对齐 | 改为在文物附着点下面归零 |
| 进入范围后没有半透明预览 | 预览关闭、触发区域关闭、插槽暂停或交互层不匹配 | 依次确认预览、Is Trigger、工作状态和交互层 |
| 归位后黄色轮廓仍显示 | 选择进入事件没有暂停当前插槽 | 确认选择进入=False、选择离开=True |
| 文物取走后插槽不再工作 | 选择离开事件没有恢复工作状态 | 把当前插槽的工作状态恢复为 True |
| 错误文物被吸附 | 交互层范围过宽 | 使用专门交互层,必要时增加选择过滤条件 |
| 吸附过程瞬间跳动 | 过渡时间过低 | 提高到 0.05~0.15 秒并在头戴设备中观察 |
| 归入父对象后位置变化 | Sockets 父对象自身带有变换 | 归类前把父对象位置和旋转归零、缩放设为 1 |
本课成果清单
逐项确认后,三个文物就已经形成准确、稳定并可重复使用的归位系统。
- 三个文物都能正常抓走,并在各自感应范围内松手归位。
- 半透明预览位置与文物最终位置一致。
- 普通文物和带附着点文物的姿态都正确。
- 归位后黄色轮廓消失,取走后插槽恢复接收。
- 已归位文物不容易被其他物体碰落。
- 三个插槽互不干扰,并统一归入 Sockets 父对象。
把知识变成作品
本课练习
请按顺序完成以下任务,并保存自己的学习成果。- 01
选择一个尚未设置归位点的文物,从创建插槽、调整感应范围、精确归零到连接选择事件,独立完成完整流程。
- 02
分别让正确文物、错误文物和第二件文物靠近同一插槽,观察允许、拒绝和已占用三种反馈是否清楚。
- 03
比较 0.15、0.05 和 0.02 秒三种吸附过渡,在头戴设备中选择既快速又不会明显跳动的设置。
把本课进度保存下来
登录后可以保存浏览内容、有效学习时间、完成状态和答题参与记录。