ARCore+Unity中替换Andy预制体为立方体后底部未接触跟踪平面
解决ARCore替换Andy预制体后立方体不贴合平面的问题
嘿,我之前也踩过这个坑!Andy预制体能完美贴合平面,核心原因是它的轴心点(Pivot)刚好在模型底部,而Unity默认创建的立方体轴心是在模型正中心的。当ARCore的代码把预制体放在检测到的平面位置时,是把预制体的轴心点对齐到平面上的——立方体中心落在平面上,底部自然就悬空了。
下面是几个快速搞定的方法:
调整立方体的轴心结构
最简单的操作是给立方体加一个空父物体:把立方体的Local Position的Y轴向上移动自身高度的一半(比如1x1x1的立方体,就设为(0, 0.5, 0)),然后把这个空父物体存成新的预制体。这样父物体的轴心就在立方体底部,ARCore放置时就能完美贴合平面了。如果是导入的外部模型,也可以在模型导入设置里直接调整轴心到底部。在代码里添加位置偏移
要是不想改模型结构,也可以在生成预制体的代码里给位置加个Y轴偏移。找到HelloAR中负责放置物体的代码(一般在HelloARController.cs的触摸响应方法里),实例化时给位置补上立方体高度的一半:// 假设立方体高度为1f,偏移量设为0.5f Vector3 spawnPos = hitPose.position + new Vector3(0, 0.5f, 0); Instantiate(yourCubePrefab, spawnPos, hitPose.rotation);这样就能让立方体底部刚好落在平面上。
检查缩放和锚点设置
不小心给立方体加了非均匀缩放也会导致位置错位,记得确保预制体的缩放是(1,1,1)。另外ARCore的Anchor组件绑定在预制体根节点,根节点的轴心和缩放一定要保持正确状态。
试上面的方法应该就能解决问题啦!
内容的提问来源于stack exchange,提问作者RazorAlliance192
相关产品推荐
相关产品推荐

