它是什么

InteractionAttachController 是 IInteractionAttachController 的默认实现,用来控制 attach transform 的平移和旋转。

它通常与 NearFarInteractor 配合使用:

  • 处理远距离交互
  • 被选中对象的稳定
  • 把远处物体以加速方式拉向用户

它还提供一种相对于 XROrigin 的平滑选项,让远距离抓取对象在玩家移动时仍保持更一致的平滑效果。

一句话定位:

InteractionAttachController 决定"远距离选中后的物体手感"。

它不决定"谁被选中",只决定"被选中后这个附着点怎么跟手、怎么平滑、怎么推拉、怎么旋转"。

属性

属性作用
Transform To Follow附着锚点要跟随的 transform。通常是控制器或某个稳定锚点。
Motion Stabilization Mode附着锚点位置与旋转的稳定模式。
Position Stabilization位置稳定因子;值越大稳定作用越明显。
Angle Stabilization角度稳定因子;值越大旋转越稳。
Smooth Offset是否在 XROrigin 空间里对偏移做平滑。适合远距抓物更自然。
Smoothing Speed平滑速度。值大时更快收敛到稳定状态。
Use Distance Based Velocity Scaling距离越远,移动速度可越快,避免远距离推拉太肉。
Use Manipulation Input是否允许用输入轴操控附着点。
Manipulation Input具体操控用的输入(一般对应摇杆)。
X-axis Mode / Y-axis Mode左右 / 上下输入是平移还是旋转。
Combine Manipulation Axes是否允许同时使用两个轴。
Translate Speed推拉速度。
Rotate Speed旋转速度。

在项目三个场景里的理解

场景重要程度原因
Home(首页)中等主要价值在 UI 射线,不在远距抓物手感
质量评价高需要选中点云、旋转、缩放、推拉、不抖——这些都靠它
JND中高偏向点选与轻量操控时重要度略低于质量评价,但仍关键

最值得先调的 6 个参数

  1. Use Manipulation Input:决定摇杆能不能直接操控选中物体
  2. Manipulation Input:绑定的输入轴
  3. Translate Speed / Rotate Speed:推拉 / 旋转速度
  4. Smooth Offset:远距偏移是否平滑
  5. Use Distance Based Velocity Scaling:远距离是否放大速度

推荐调参顺序:先决定"要不要让摇杆控制模型",再决定"推拉和旋转速度",最后调"稳不稳、柔不柔"。

一个容易误解的点

官方 near-far-interactor.md 提到:

NearFarInteractor 还不支持像 XRRayInteractor 那样直接使用摇杆控制 attach transform。

但 Starter Assets 3.4.x 工程实践中:

  • 摇杆操控能力并没有真的消失
  • 它被放到了 InteractionAttachController 的输入操控逻辑里

更准确的理解:

新版不是把"操控 attach transform"的能力删掉了,而是把它从 XRRayInteractor 的心智模型,转移到了 InteractionAttachController 这一层。

调试建议

如果模型远程选中后体验奇怪:

  • 物体突然飞到面前
  • 物体选中后抖动
  • 推拉太慢
  • 旋转太快或太慢
  • 松开摇杆后还在"飘"

这些问题大概率都和它的参数设置有关。

参考资料