第 06 课
实现与3D物体的交互(上)
本课将为博物馆中的小型文物建立基础抓取功能。你会先让文物能够被手柄射线或近距离接触选中,再解决抓取后突然旋转、握持位置不自然的问题。
让文物能够被自然地拿起观察
从交互双方和基础抓取开始,逐步完成近远距离抓取、坐标轴判断与附着点调整,让文物既能抓起来,也能以正确姿态稳定跟随手柄。
学完你将能够
学习目标
- 解释交互器、可交互对象和交互管理器在一次抓取中的职责。
- 为文物选择合适的碰撞体,并添加刚体与可抓取组件。
- 分别使用左、右手柄完成近距离和远距离抓取。
- 根据操作需要开启或关闭近距离探测与远距离探测。
- 使用本地坐标轴说明文物抓取后突然旋转的原因。
- 创建并设置自定义附着点,让文物以正确姿态被拿起。
开始操作前
准备工作
- 打开上一课保存的博物馆项目和主场景,确认场景漫游可以正常使用。
- 确认场景中已经存在 XR Origin、左右手柄控制器和 XR Interaction Manager。
- 确认项目已导入 XR 交互工具包 3.x 的基础资源,设备模拟器可以正常运行。
- 在场景中选择三个适合拿起观察的小型文物;大型雕像和固定展品保持不可抓取。
- 保存当前场景,再开始添加物理与交互组件。
本课学习路线
按照学习模块逐步完成
每个模块都包含理解、跟随操作和独立实践。先看懂一次抓取怎样发生
认识交互双方与动态文物
抓取需要手柄主动寻找目标,也需要文物明确表示自己可以被抓取。先分清交互双方,再判断哪些展品适合移动。交互器与可交互对象各有职责
交互器(Interactor)是主动方,负责寻找、指向或选择目标。本项目左右手柄下的 Near Far Interactor 就是“远近交互器”。
可交互对象(Interactable)是被动方,表示物体能够被选择、抓取或操作。普通模型添加 XR Grab Interactable 后,才会成为可抓取对象。
XR Interaction Manager 是“交互管理器”,负责协调交互器与可交互对象之间的悬停、选择和释放关系。
- 手柄交互器先发现目标。
- 交互管理器判断双方是否允许交互。
- 文物的可抓取组件响应选择,并让文物跟随手柄。
一次抓取中的三个角色
主动方、被动方和协调者缺一不可。
左右滑动表格,可查看完整内容
| 角色 | 项目中的对象 | 主要职责 |
|---|---|---|
| 交互器 | Near Far Interactor | 寻找、指向并选择可以交互的目标 |
| 可交互对象 | 添加了 XR Grab Interactable 的文物 | 接收选择,并在抓取期间跟随手柄 |
| 交互管理器 | XR Interaction Manager | 协调悬停、选择和释放关系 |
静态展台与动态文物
Static 表示 Unity 可以把物体当作预计长期不移动的对象处理。墙壁、展台和建筑结构通常适合设为静态;需要被拿起的文物会在运行时改变位置和朝向,不适合勾选 Static。
静态场景可以提前计算光照并保存结果,这称为“烘焙光照”。动态文物会离开原位置,因此场景使用 Light Probe,也就是“光照探针”,记录周围环境光照,让文物移动后仍能自然融入场景。
隐藏光照探针的辅助图示
- 01
打开场景窗口右上角的 Gizmos 菜单。Gizmos 是只在编辑器中显示的辅助图示。
- 02
在搜索框输入 light。
- 03
找到 LightProbeGroup。
- 04
关闭它右侧的图示显示,再观察场景窗口。

关闭的是场景窗口中的辅助图示,不是光照探针功能。文物移动后仍会受到光照探针的影响。
点击图片可以查看完整截图轮到你判断和操作
选择第一个目标文物,确认它适合在运行时移动,并清理场景中的辅助显示。
- 文物没有勾选 Static。
- 能够在 Gizmos 菜单中找到 LightProbeGroup。
- 能够只隐藏探针图示,不删除或关闭光照探针。
- 能够说明为什么大型固定展品不需要设置为可抓取对象。
先让文物能够被拿起来
为第一个文物建立基础抓取
碰撞体负责被发现,刚体负责物理运动,可抓取组件负责抓取行为。三个部分配合后,普通模型才能成为可以拿起的文物。基础抓取需要的三个组成
理解各自职责,遇到问题时才能准确找到原因。
左右滑动表格,可查看完整内容
| 组成 | 中文含义 | 主要作用 | 本课要求 |
|---|---|---|---|
| Collider | 碰撞体 | 定义射线或近距离接触能够感知的范围 | 选择简单并贴合文物的形状 |
| Rigidbody | 刚体 | 让物体参与重力、碰撞和其他物理运动 | 由可抓取组件一并添加并保留重力 |
| XR Grab Interactable | 可抓取组件 | 定义选择、跟随手柄和释放行为 | 添加到每个目标文物 |
怎样选择碰撞体形状
博物馆文物不需要每个凹槽都参与判定,优先选择简单、稳定且足够贴合的形状。
左右滑动表格,可查看完整内容
| 碰撞体 | 适合的外形 | 使用提示 |
|---|---|---|
| Box Collider | 盒状或轮廓较规整的文物 | 计算简单,优先尝试 |
| Sphere Collider | 球体或近似圆形文物 | 用半径覆盖主要轮廓 |
| Capsule Collider | 细长或圆柱状文物 | 适合瓶状和杆状物体 |
| Mesh Collider | 简单碰撞体无法合理覆盖的模型 | 轮廓更精确,动态物体通常需要启用凸面模式 |
添加并调整碰撞体
- 01
在层级窗口中选择第一个文物,例如 RosehipVase。
- 02
点击 Add Component,搜索并添加 Box Collider。
- 03
点击 Edit Collider,拖动控制点,让碰撞范围基本包住文物。
- 04
确认碰撞体没有明显伸入下方展台,并保持 Is Trigger 不勾选。
- 05
如果文物与展台的碰撞体已经互相穿插,把文物稍微抬高并留出很小的间隔。
添加可抓取组件
- 01
保持文物处于选中状态。
- 02
点击 Add Component,搜索 XR Grab。
- 03
选择 XR Grab Interactable。
- 04
确认属性窗口中同时出现 Rigidbody。

确认文物已有合适的碰撞体,再添加 XR Grab Interactable。添加后,Unity 还会为文物补充 Rigidbody。
点击图片可以查看完整截图第一次抓取前要认识的属性
本课先保留大部分默认值,重点确认以下设置。
左右滑动表格,可查看完整内容
| 属性 | 中文含义 | 本课关注点 |
|---|---|---|
| Interaction Layer Mask | 交互层遮罩 | 必须与手柄交互器的交互层有重合 |
| Select Mode | 选择模式 | Single 表示同一时刻只允许一个交互器抓住文物 |
| Use Gravity | 是否使用重力 | 开启后,文物释放时会自然下落 |
| Attach Transform | 附着点 | 暂时留空,稍后用它修正抓取姿态和握持位置 |
分别使用右手和左手抓取
- 01
运行场景,按右方括号键 ] 取得右手柄控制权。
- 02
按住鼠标右键并移动鼠标,让射线指向文物。
- 03
按 G 抓取文物,松开 G 释放。
- 04
按左方括号键 [ 切换到左手柄,再使用 Shift + G 测试左手抓取。
- 05
只记录文物能否抓起,以及抓取后是否突然改变朝向;先不要旋转文物模型来掩盖问题。
完成第一个文物的基础设置
让左右手都能抓起并释放文物,同时观察物理和姿态表现。
- 碰撞体基本包住文物,且没有与展台明显穿插。
- 文物具有 Rigidbody 和 XR Grab Interactable。
- 左右手都能抓起文物。
- 文物释放后会受到重力影响,并落回展台附近。
让同一只手自然切换两种抓取
体验并配置近距离与远距离交互
远近交互器会根据距离自动选择接触抓取或射线抓取。理解两个开关后,你就能为不同任务选择合适的操作方式。一个交互器完成两种操作
Near Far Interactor 是“远近交互器”。距离文物较远时,它通过射线寻找目标;手柄靠近并接触文物时,射线会消失,交互器改用近距离抓取。
这种设计很适合博物馆场景:体验者既可以在远处把小型文物拿到眼前,也可以走近展台后自然伸手抓取。
- 近距离交互:手柄接触文物后直接抓取。
- 远距离交互:手柄通过射线指向并抓取远处文物。
- 两种方式同时开启:系统根据距离自动切换。
远近交互器的开关组合
Enable Near Casting 控制近距离目标探测,Enable Far Casting 控制远距离射线探测。
左右滑动表格,可查看完整内容
| 近距离探测 | 远距离探测 | 实际效果 |
|---|---|---|
| 开启 | 开启 | 自动在接触抓取与射线抓取之间切换 |
| 开启 | 关闭 | 只能靠近并接触物体后抓取 |
| 关闭 | 开启 | 只能通过射线抓取 |
| 关闭 | 关闭 | 无法通过这个交互器发现抓取目标 |
分别控制近场和远场
- 01
选择左手柄下的 Near Far Interactor。
- 02
在同名组件中找到 Enable Near Casting 和 Enable Far Casting。
- 03
先保持两个选项都开启,分别演示远距离射线抓取和近距离接触抓取。
- 04
关闭 Enable Far Casting,观察左手射线消失后是否仍能接触抓取。
- 05
恢复远距离探测,再关闭 Enable Near Casting,确认左手只能通过射线抓取。
- 06
演示结束后,把两个选项恢复为项目需要的状态。
用三组设置验证自己的判断
每次修改一个开关,先预测结果,再运行场景验证。
- 两个选项都开启时,完成一次远距离抓取和一次近距离抓取。
- 只开启近距离探测时,确认射线消失但接触抓取仍然有效。
- 只开启远距离探测时,确认只能通过射线抓取。
- 完成后恢复项目需要的远近交互设置。
先找到原因,再调整参数
分析抓取后姿态突变的原因
抓取时不仅会对齐位置,还会对齐朝向。模型看起来摆正了,不代表它的本地坐标轴也符合抓取需要。抓取的本质是对齐附着点
抓取发生时,系统会让文物的附着点与交互器的抓取点对齐。没有自定义附着点时,系统默认使用文物自身的位置和朝向。
模型的本地坐标轴与手柄抓取点的坐标轴不一致时,系统为了完成朝向对齐,就会在抓取瞬间旋转文物。
观察坐标轴时要认清的方向与工具
先显示模型真实轴向,再比较文物和交互器。
左右滑动表格,可查看完整内容
| 项目 | 含义 | 观察重点 |
|---|---|---|
| 红色 X 轴 | 左右方向 | 观察物体横向 |
| 绿色 Y 轴 | 上下方向 | 标准状态下应向上 |
| 蓝色 Z 轴 | 前后方向 | 标准状态下指向物体前方 |
| Pivot | 显示物体真实轴心 | 不要用视觉边界计算出的 Center 代替 |
| Local | 显示物体本地坐标 | 不要用固定不变的 Global 判断模型轴向 |
观察文物模型的真实坐标轴
- 01
在场景窗口工具栏中选择 Pivot。
- 02
把坐标模式切换为 Local。
- 03
选择文物,观察红、绿、蓝三根轴实际指向哪里。
- 04
对照文物外观,判断绿色 Y 轴是否向上、蓝色 Z 轴是否指向预期前方。

文物外观已经摆正,但绿色 Y 轴和蓝色 Z 轴并不符合标准朝向。视觉摆放与模型本地坐标是两件事。
点击图片可以查看完整截图查看远近交互器的坐标轴
- 01
选择左手或右手下的 Near Far Interactor。
- 02
继续保持 Pivot 和 Local。
- 03
观察绿色 Y 轴与蓝色 Z 轴的方向。
- 04
把交互器轴向与文物轴向进行比较,预测文物抓取后需要怎样旋转才能完成对齐。

交互器采用更接近 Unity 标准的坐标方向。抓取时由文物去匹配抓取点,因此轴向不同的文物会突然改变姿态。
点击图片可以查看完整截图先预测,再用一次抓取验证
说出两组坐标轴的差异,并用运行结果检验自己的判断。
- 能够正确使用 Pivot 和 Local。
- 能够说出文物红、绿、蓝三根轴分别指向哪里。
- 能够指出文物轴向与交互器轴向的主要差异。
- 能够用“抓取时对齐位置和朝向”解释姿态突变。
让文物抓得稳、拿得自然
创建附着点并修正文物姿态
自定义附着点可以看作文物上一个看不见的握把。它决定手抓在哪里,也决定文物以什么朝向与手柄对齐。附着点同时控制位置和朝向
Attach Transform 是“自定义附着点”。把它放在文物中心、瓶颈或把手附近,会改变手柄与文物对齐的位置;旋转附着点,则会改变文物被拿起后的朝向。
为轴向不标准的模型创建附着点,可以在不破坏展台摆放的情况下,单独修正抓取姿态。
创建名为 AT 的空子对象
- 01
在层级窗口中选择可抓取文物。
- 02
右键单击文物并选择 Create Empty,也就是“创建空对象”。
- 03
确认新对象位于文物下面,成为文物的子对象。
- 04
把新对象命名为 AT,代表附着点。

AT 必须位于可抓取文物下面。这样文物移动时,附着点会始终跟随文物。
点击图片可以查看完整截图把 AT 指定为 Attach Transform
- 01
重新选择文物父对象。
- 02
在 XR Grab Interactable 中找到 Attach Transform。
- 03
把层级窗口中的 AT 拖到该字段,或使用字段右侧的选择按钮指定它。
- 04
确认字段中显示 AT (Transform)。

字段中显示 AT (Transform),说明可抓取组件已经使用这个子对象作为附着点。
点击图片可以查看完整截图修正附着点的朝向
- 01
选择 AT,并保持场景窗口为 Pivot 和 Local。
- 02
按 E 切换到旋转工具。
- 03
逐轴调整 AT,让绿色 Y 轴向上、蓝色 Z 轴指向预期前方。
- 04
按 W 切换到移动工具,再次确认坐标轴方向。
- 05
不要再次旋转文物模型,也不要缩放 AT。

需要调整的是 AT 的坐标轴。图中绿色 Y 轴向上,蓝色 Z 轴指向预期前方。
点击图片可以查看完整截图
这组旋转值只适用于当前文物。不同模型的导入轴向可能不同,请以场景中实际显示的坐标轴为准,不要机械照抄。
点击图片可以查看完整截图附着点的调整方法
每次只改一个因素,运行后立即观察结果。
左右滑动表格,可查看完整内容
| 需要改善的现象 | 调整内容 | 操作原则 |
|---|---|---|
| 文物抓取后朝向错误 | 调整 AT 的 Rotation | 逐轴旋转,以实际坐标轴方向为准 |
| 文物离手柄太远或太近 | 小幅调整 AT 的 Position | 分别用近距离和远距离抓取验证 |
| 希望抓住瓶颈、把手或底部 | 把 AT 移到合适握持位置 | 让对齐位置符合真实拿取方式 |
| AT 的 Scale 不是 1, 1, 1 | 恢复为等比缩放 | 不要通过缩放附着点改变握持距离 |
把设置应用到三个文物
- 01
为另外两个小型文物选择合适的碰撞体,并避免与展台初始重叠。
- 02
添加 XR Grab Interactable,并确认存在 Rigidbody。
- 03
分别使用左右手完成一次基础抓取。
- 04
分别验证近距离接触抓取与远距离射线抓取。
- 05
轴向不标准的文物创建 AT,逐轴调整旋转,再小幅调整握持位置。
- 06
确认大型雕像和固定展品保持不可抓取。
常见现象与处理方法
根据现象检查相关设置,避免反复修改无关属性。
左右滑动表格,可查看完整内容
| 现象 | 首先检查 | 处理方法 |
|---|---|---|
| 射线指向文物但不能抓取 | 碰撞体、可抓取组件、交互层和远距离探测 | 依次确认四项设置,并切换到对应手柄 |
| 靠近后不能直接抓取 | 近距离探测和碰撞体范围 | 启用 Enable Near Casting,并让碰撞范围覆盖接触区域 |
| 运行后文物突然被弹开 | 文物与展台的碰撞体是否初始重叠 | 缩小或移动碰撞体,必要时把文物稍微抬高 |
| 文物穿过展台或地面 | 双方碰撞体和 Is Trigger | 补充实体碰撞体,并保持需要阻挡的一方不作为触发器 |
| 文物抓取后方向错误 | 本地坐标轴、AT 引用和 AT 旋转 | 使用 Pivot、Local 逐轴调整 AT |
| 方向正确但握持距离不自然 | AT 的位置 | 小幅移动 AT,并分别验证近距离和远距离抓取 |
本课成果清单
逐项确认后,你就已经完成三个小型文物的基础抓取。
- 三个目标文物都有合适的碰撞体、刚体和可抓取组件。
- 左右手都能完成近距离和远距离抓取。
- 文物释放后能够自然落回展台附近。
- 需要修正的文物都设置了 AT,抓取后不再大幅改变姿态。
- 文物的握持位置和距离适合近距离观察。
把知识变成作品
本课练习
请按顺序完成以下任务,并保存自己的学习成果。- 01
任选一个未设置的适合拿起的小型文物,独立完成碰撞体、刚体、可抓取组件和附着点设置。
- 02
分别关闭一次近距离探测和远距离探测,先预测操作结果,再用左右手柄验证并恢复设置。
- 03
从三个文物中选出握持最不自然的一个,只调整 AT 的位置和旋转,使抓取姿态更符合真实拿取方式。
把本课进度保存下来
登录后可以保存浏览内容、有效学习时间、完成状态和答题参与记录。