You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity AR Core项目求助:对象与物理绑定相机,需固定于现实世界

问题排查方向:Unity AR Core 对象随相机移动而非固定于现实世界

以下是针对你遇到的「对象/平面随相机移动、投掷物不受手机位移影响」问题的具体排查点:

1. 层级与父级关系检查

  • 立刻检查TestCube的父对象:如果它被设为MainCamera或XR Origin的子物体,移动相机时必然会跟着动。必须把投掷对象放在场景根节点下,或者生成时直接关联到检测到的AR Plane节点下(如果需要贴合地面)。
  • 确认XR Origin的Tracking Space设置:在Inspector里找到XR Origin组件,确保它的Tracking Space是RoomScale或Stationary(默认选RoomScale即可),这是AR空间跟踪映射现实世界的基础。

2. 物理系统配置验证

  • 看TestCube的Rigidbody组件:千万别勾选Is Kinematic,勾了之后物体会忽略物理引擎,还会强制继承父对象的运动;同时确保Use Gravity是勾选状态,不然不会下落。
  • 检查AR Plane的Collider:AR Plane Manager生成的平面必须带有启用的Collider组件,不然投掷物会直接穿过去,物理交互也不会生效。
  • 核对Physics Settings:打开Edit > Project Settings > Physics,确认Gravity的Y轴是负数(默认-9.81),同时检查Layer设置,确保AR Plane和TestCube所在的Layer在碰撞矩阵里允许互相碰撞。

3. AR会话跟踪状态排查

  • 确认AR Session组件正常工作:场景里必须有AR Session和AR Session Origin两个核心组件,且AR Session Origin的Camera字段正确关联到MainCamera,AR Camera Manager组件没有被禁用。
  • 检查AR Plane Manager设置:确保Detection Mode勾选了Horizontal(针对地面平面),Tracked Plane Prefab已经正确赋值,这样检测到平面时才会生成带物理碰撞的平面对象。
  • 运行时Debug验证:在代码里加几行Debug.Log,输出MainCamera的世界坐标和TestCube的世界坐标,对比两者的变化——如果TestCube的世界坐标跟着相机变,那肯定是父级或生成逻辑有问题;如果坐标没动但视觉上跟着走,可能是相机跟踪出了问题。

4. 投掷与生成逻辑修正

  • 生成TestCube的位置必须基于世界空间:用Camera.main.ScreenPointToRay发射射线,检测与AR Plane的交点,以此作为生成位置,绝对不能直接用相机的局部坐标生成对象。
  • 投掷力的施加要基于世界方向:给Rigidbody加力时,用AddForce(forceVector, ForceMode.Impulse),这里的forceVector必须是世界空间下的方向(比如转换相机前方为世界空间方向,而非直接用transform.forward,因为相机移动时这个局部方向会变化)。

相关设置截图

  • 项目树:Project Tree
  • XR Origin:XR Origin
  • MainCamera:MainCamera
  • TestCube Object:TestCube Object

内容的提问来源于stack exchange,提问作者neuralBuilder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:16:17