第 07 课
实现与3D物体的交互(下)
本课继续完善文物抓取体验。你将使用动态附着实现“接触哪里就抓取哪里”,控制远处文物是留在原处还是移动到手边,并根据碰撞真实性、跟随流畅度和计算需求选择合适的移动方式。
让文物抓得自然,也能被场景真实阻挡
继续完善文物抓取体验:让文物从实际接触位置被拿起,设置远距离抓取后的停留位置,并选择兼顾碰撞真实性与跟随体验的移动方式。
学完你将能够
学习目标
- 说明动态附着为什么能够减少抓取瞬间的位置跳动。
- 根据物体用途选择固定附着点或动态附着点。
- 判断远距离抓取后,物体应该留在远处还是移动到手边。
- 正确处理手柄默认策略与单个文物特殊策略之间的关系。
- 比较速度跟踪、运动学和即时移动的机制、碰撞表现与适用场景。
- 为需要真实碰撞的博物馆文物选择速度跟踪。
- 把通用抓取设置应用到其他文物,同时避免复制错误引用。
开始操作前
准备工作
- 打开上一课保存的主场景,确认第一个文物已经具有碰撞体、刚体和可抓取组件。
- 分别使用左右手完成一次近距离抓取和远距离射线抓取。
- 确认展台、墙面和地面具有实体碰撞体,并且没有勾选 Is Trigger。
- 确认设备模拟器可以控制左右手柄,场景漫游功能正常。
- 保存当前场景,再开始调整抓取行为。
本课学习路线
按照学习模块逐步完成
每个模块都包含理解、跟随操作和独立实践。让文物从接触位置自然跟随
使用动态附着改进抓取位置
固定附着会把文物拉向预先设定的握持点;动态附着则会根据本次接触位置建立抓取点。先理解差异,再观察两种方式的视觉表现。固定附着为什么会产生吸附跳动
使用固定 Attach Transform,也就是“固定附着点”时,无论手柄接触文物的哪个位置,系统都会把同一个固定附着点对齐到抓取点。
如果手柄接触位置与固定附着点相距较远,文物就会在抓取瞬间发生位置跳动或旋转,看起来像被吸到手柄上。
- 剑、手枪和带握柄的工具通常需要固定握姿,适合固定附着点。
- 花瓶、罐子等可以从多个位置拿取的物体,更适合从实际接触位置开始跟随。
动态附着怎样工作
Use Dynamic Attach 表示“使用动态附着”。启用后,系统会在每次开始抓取时,根据交互器与文物接触的位置和朝向,为本次抓取建立有效附着点。
动态附着并不是取消附着,而是把附着点从“提前固定”改为“抓取发生时动态确定”。因为接触点与附着点基本重合,文物不需要先跳到另一个位置。
固定附着与动态附着
根据物体的真实使用方式选择,而不是把所有物体设置成同一种方式。
左右滑动表格,可查看完整内容
| 方式 | 附着点怎样确定 | 适合的物体 | 抓取表现 |
|---|---|---|---|
| 固定附着 | 提前设置位置与朝向 | 剑、手枪、带固定握柄的工具 | 握姿统一,但接触点较远时可能产生吸附跳动 |
| 动态附着 | 每次抓取时根据接触位置建立 | 花瓶、罐子和可从多处拿取的文物 | 从当前接触位置开始跟随,拿取更自然 |
启用动态附着
- 01
选择已经能够抓取的第一个文物。
- 02
在属性窗口中找到 XR Grab Interactable,也就是“可抓取组件”。
- 03
找到并勾选 Use Dynamic Attach。
- 04
确认 Match Position、Match Rotation 和 Snap To Collider Volume 保持启用。
- 05
保存场景并进入运行状态。

观察红框内的总开关与四个子选项。完整动态附着通常同时匹配位置和旋转,并把接触点限制在文物碰撞体范围内。
点击图片可以查看完整截图动态附着相关选项
本课使用单手抓取,先保持这些选项为默认状态。
左右滑动表格,可查看完整内容
| 选项 | 中文理解 | 作用 |
|---|---|---|
| Match Position | 匹配位置 | 使用交互器接触时的位置建立动态附着点 |
| Match Rotation | 匹配旋转 | 使用交互器接触时的朝向建立动态附着点 |
| Snap To Collider Volume | 限制在碰撞体范围 | 让动态附着点尽量位于文物碰撞体表面或内部 |
| Reinitialize Every Single Grab | 恢复单手时重新确定 | 多手抓取变回单手抓取时,重新建立单手附着姿态 |
从不同位置抓取同一个文物
使用远距离射线和近距离接触分别比较中心、边缘和顶部三个抓取位置。
- 远距离射线指向文物中心和边缘时,文物都从命中位置开始跟随。
- 近距离接触文物不同位置时,不出现明显吸附跳动。
- 暂时关闭 Match Rotation,能够观察并说出朝向变化。
- 比较结束后恢复位置与旋转匹配。
决定远处物体留在哪里
设置远距离抓取后的物体位置
射线选中远处文物后,可以让它留在射线端,也可以像隔空取物一样拉到手边。手柄提供默认方式,单个文物可以根据用途覆盖这个默认方式。远处抓住后,应该留在原处还是来到手边
留在远处适合调整远处摆件、大型模型或机关,可以保持观察距离并减少遮挡。
移动到手边适合小型文物、工具和解谜道具,能够快速拿到眼前观察或使用。两种方式没有绝对好坏,应根据任务目的选择。
查看文物端的三种远距离附着模式
- 01
选择第一个文物。
- 02
在 XR Grab Interactable 中找到 Far Attach Mode,也就是“远距离附着模式”。
- 03
展开选项,依次查看 Defer To Interactor、Near 和 Far。
- 04
先选择 Defer To Interactor,让文物使用当前手柄的默认方式。

文物端可以听从手柄设置,也可以明确要求来到手边或留在远处。这个设置只影响当前文物。
点击图片可以查看完整截图文物端的三种策略
先确定当前文物是否需要特殊行为。
左右滑动表格,可查看完整内容
| 选项 | 中文理解 | 实际效果 |
|---|---|---|
| Defer To Interactor | 听从手柄 | 使用抓取它的手柄交互器设置 |
| Near | 来到手边 | 强制把当前文物移动到手柄附近 |
| Far | 留在远处 | 强制让当前文物保持在远处抓取点 |
设置手柄端的默认策略
- 01
选择左手控制器下的 Near-Far Interactor。
- 02
在同名组件中找到 Far Attach Mode。
- 03
把左手设置为 Near,让它默认把远处物体拉到手边。
- 04
选择右手的 Near-Far Interactor,并把它设置为 Far。

手柄端只有 Near 和 Far 两种默认行为。文物选择 Defer To Interactor 时,才会使用这里的设置。
点击图片可以查看完整截图手柄默认策略与文物特殊策略
文物明确选择 Near 或 Far 时,会覆盖手柄默认设置。
左右滑动表格,可查看完整内容
| 左手设置 | 文物设置 | 使用左手抓取的结果 |
|---|---|---|
| Near | Defer To Interactor | 文物移动到左手附近 |
| Far | Defer To Interactor | 文物留在远处抓取点 |
| Near | Far | 文物仍留在远处,文物设置优先 |
| Far | Near | 文物仍来到手边,文物设置优先 |
用左右手验证设置优先关系
保持左手 Near、右手 Far,分别改变文物端设置并预测结果。
- 文物选择 Defer To Interactor 时,左右手抓取结果不同。
- 文物选择 Near 时,左右手都会把它拉到手边。
- 文物选择 Far 时,左右手都会让它留在远处。
- 把文物拉到手边后,能够保持抓取并通过摇杆移动。
- 完成比较后恢复项目最终需要的设置。
在碰撞真实性与跟随流畅度之间选择
比较三种抓取移动方式
抓取期间,系统必须不断更新文物位置,使它跟随手柄。更新方式不同,文物的碰撞表现、跟随延迟和计算需求也会不同。为什么有碰撞体的文物仍可能穿过展台
文物未被抓取或已经释放时,刚体和碰撞体通常能够正常参与物理碰撞。被抓取后,可抓取组件需要持续更新文物的位置和朝向。
如果系统直接改写位置,文物可能在相邻两帧之间跨过墙面,或在更新过程中绕过普通静态碰撞体。因此,移动方式会直接影响抓取状态下的防穿透效果。
为博物馆文物选择速度跟踪
- 01
选择可抓取文物。
- 02
在 XR Grab Interactable 中找到 Movement Type,也就是“移动方式”。
- 03
展开选项,观察 Velocity Tracking、Kinematic 和 Instantaneous。
- 04
选择 Velocity Tracking,也就是“速度跟踪”。

移动方式决定抓取期间怎样驱动刚体或直接改变物体位置。博物馆文物需要被展台和墙面阻挡,因此选择速度跟踪。
点击图片可以查看完整截图三种抓取移动方式
比较系统怎样移动文物,以及它们在碰撞和跟随方面的差异。
左右滑动表格,可查看完整内容
| 移动方式 | 系统怎样移动文物 | 主要优点 | 主要限制 |
|---|---|---|---|
| Velocity Tracking 速度跟踪 | 设置刚体的线速度和角速度,让刚体追赶手柄 | 物理参与程度高,静态碰撞体能够阻挡文物 | 可能略有跟随延迟,计算量相对较高 |
| Kinematic 运动学 | 把刚体切换为运动学状态,并在物理更新中移向目标 | 视觉位置与物理状态同步,适合推动动态刚体 | 跟随时仍可能穿过没有刚体的普通碰撞体 |
| Instantaneous 即时移动 | 每一帧直接设置物体的位置和旋转 | 跟随直接、延迟低 | 容易穿过静态碰撞体,物理反馈较弱 |
速度跟踪:重视真实阻挡
速度跟踪通过刚体速度让文物追随手柄。展台和墙壁等静态碰撞体可以阻挡文物,释放后也能保留较自然的运动速度。
因为刚体需要追赶手柄,手柄快速移动时文物可能稍微落后。参数过大还可能产生抖动,所以不能只追求完全贴手。
- 适合不能穿过展台和墙面的博物馆文物。
- 适合需要与环境碰撞的手持工具和可投掷物。
运动学:适合推动其他动态物体
运动学方式在固定的物理更新节奏中把物体移向目标位置。它能够较稳定地推动其他动态刚体,例如网球拍击打带刚体的网球。
它并不适合把“绝不能穿过静态墙壁”作为首要目标的文物,因为跟随交互器时仍可能穿过没有刚体的普通碰撞体。
即时移动:重视低延迟
即时移动每一帧直接修改物体的位置和旋转,视觉跟随通常最紧密,适合悬浮菜单、轻量界面和不参与复杂物理碰撞的装饰物。
直接改写位置容易绕过展台和墙面等静态碰撞体,因此不适合本课强调真实阻挡的文物。
根据使用场景选择移动方式
先确定最重要的交互目标,再选择方式。
左右滑动表格,可查看完整内容
| 使用场景 | 推荐方式 | 选择原因 |
|---|---|---|
| 文物不能穿过展台和墙面 | 速度跟踪 | 静态碰撞体能够阻挡文物 |
| 网球拍需要击打动态网球 | 运动学 | 能较稳定地推动其他动态刚体 |
| 抓住悬浮菜单调整位置 | 即时移动 | 重视低延迟,不需要实体碰撞 |
| 手持工具需要碰撞环境 | 速度跟踪 | 更符合真实物理阻挡 |
| 简单道具只需搬运到目标点 | 即时移动 | 操作流畅,物理要求较低 |
让同一个文物依次体验三种方式
使用相同移动路线与速度进行比较,记录碰撞与跟随表现。
- 选择即时移动,把文物缓慢移向展台或墙面并记录结果。
- 选择运动学,重复相同操作。
- 选择速度跟踪,再次重复相同操作。
- 加快手柄速度,比较三种方式的跟随紧密程度。
- 确认速度跟踪能够阻挡文物,并接受合理的轻微跟随延迟。
- 最终把博物馆文物恢复为速度跟踪。
把方法安全地应用到完整场景
完成另外两个文物并综合验证
最后为另外两个文物完成设置。可以复制通用参数,但必须重新确认对象层级、碰撞范围和附着点引用。先选择代表整件文物的顶层父对象
有些文物由多个模型部件组成。抓取组件应添加到代表整件文物的最上层父对象,否则抓取时可能只有局部模型移动,刚体与碰撞体也会分散在不同层级。
选择父对象后,再为整件文物添加并调整碰撞体。不同文物大小和形状不同,碰撞体不能直接照搬。
完成第二个和第三个文物
- 01
选择文物的顶层父对象,添加并单独调整碰撞体。
- 02
从多个正交方向观察碰撞范围,避免与展台初始重叠。
- 03
添加 XR Grab Interactable 和刚体。
- 04
把 Movement Type 设置为速度跟踪。
- 05
启用动态附着,并保持位置、旋转和碰撞体范围匹配。
- 06
分别用左、右手完成近距离抓取和远距离抓取。
复制组件时,参数和对象引用都会一起复制
多个文物使用相似参数时,可以复制已经设置正确的可抓取组件,再把它粘贴到目标文物的顶层父对象。
最容易忽略的是对象引用。如果第一个文物的 Attach Transform 指向自己的 AT,复制后第二个文物也可能继续引用第一个文物的 AT,导致文物飞向错误位置或朝向异常。
复制后必须逐项确认
通用参数可以复用,属于某个文物的对象引用不能直接复用。
左右滑动表格,可查看完整内容
| 项目 | 确认内容 | 发现问题时 |
|---|---|---|
| Movement Type | 是否为速度跟踪 | 重新选择 Velocity Tracking |
| Use Dynamic Attach | 是否已经启用 | 启用并确认位置、旋转匹配 |
| Far Attach Mode | 是否符合当前文物用途 | 选择听从手柄、来到手边或留在远处 |
| Attach Transform | 是否错误引用其他文物的 AT | 清除错误引用,或创建属于当前文物的附着点 |
| Rigidbody 与 Collider | 是否属于当前文物且范围正确 | 为当前文物单独添加和调整 |
完成一次三件文物的完整体验
- 01
用左手远距离抓取三个文物,再用右手重复一次。
- 02
分别走近三个文物并直接接触抓取。
- 03
从文物中心、边缘和顶部等不同位置抓取。
- 04
把文物移向展台和墙面,确认能够被实体碰撞阻挡。
- 05
释放文物,确认它们受到重力影响。
- 06
确认所有文物都没有引用其他文物的附着点。
常见现象与处理方法
根据现象定位相关设置,再重新验证。
左右滑动表格,可查看完整内容
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| 动态附着后仍吸到固定位置 | 动态附着或位置匹配没有启用 | 选择文物顶层父对象,确认两个选项均已启用 |
| 抓取位置自然但朝向仍跳变 | 旋转匹配未启用,或固定附着点旋转不合适 | 启用旋转匹配,并确认固定附着点是否需要保留 |
| 文物设置留在远处,却来到手边 | 文物端明确设置为 Near,或修改了另一只手 | 先看文物端设置,再确认当前使用的手柄 |
| 速度跟踪仍穿过墙面 | 缺少实体碰撞体、物理层不碰撞或移动过快 | 确认双方碰撞体与物理层,高速穿透时再提高检测等级 |
| 复制后文物飞向另一件文物 | 保留了其他文物的附着点引用 | 清除错误引用,或创建当前文物自己的附着点 |
| 开始运行后文物被弹开 | 文物与展台碰撞体初始重叠 | 调整碰撞范围或稍微抬高文物 |
本课成果清单
逐项确认后,三个文物就已经具有自然、稳定且符合场景需要的抓取体验。
- 三个文物都从实际接触位置开始跟随,不出现明显吸附跳动。
- 左右手的远距离抓取行为符合手柄与文物设置。
- 文物被拉到手边后,可以保持抓取并继续移动。
- 三个文物都使用速度跟踪,抓取时能够被展台和墙面阻挡。
- 每个文物都有单独调整的碰撞体,没有跨文物错误引用。
把知识变成作品
本课练习
请按顺序完成以下任务,并保存自己的学习成果。- 01
任选一件文物,分别使用完整动态附着、只匹配位置和固定附着点,比较三种握持表现并选择最合适的方案。
- 02
把左右手设置成不同的远距离附着默认方式,再为一个文物设置特殊策略,验证文物设置是否正确覆盖手柄默认设置。
- 03
为三个文物完成一次碰撞压力练习:从不同方向抓取并移向展台与墙面,记录一个仍需调整的碰撞范围或跟随参数。
把本课进度保存下来
登录后可以保存浏览内容、有效学习时间、完成状态和答题参与记录。