我正在根据屏幕动态创建网格对象。因此包含网格对象的对象总是大小相同,但网格对象具有不同的形状和大小。我想让你看到我的照片并理解它。事实上,蓝色区域是透明的。我目前正在使用移动相机在地板上拍摄 Ray,我想将物体放置在 Ray 击中的位置。但这似乎需要大量的计算。我认为我们应该首先使用对象中心坐标以外的其他坐标。而且我认为我们应该将物体放置在碰撞点上方一点点。网格对象的一半大小,所以我尝试了这个,但我失败了。我该如何解决这个问题?下面是我的源代码。Vector3 hitPositon = hit.Pose.position;Vector3 meshObjectCenter = ObjectPrefab.GetComponent<Renderer>().bounds.center;Vector3 meshObjectSize = ObjectPrefab.GetComponent<Renderer>().bounds.size;Vector3 CenterPointRevision = meshObjectCenter - hitPositon;Vector3 YAxisRevision = new Vector3(0, meshObjectSize.y / 2, 0); Vector3 NewPoint = ARObjectPrefab.transform.position - CenterPointRevision + YAxisRevision; ObjectPrefab.transform.position = NewPoint;object就是这种格式,上图看起来是成功但失败的情况。
1 回答
达令说
TA贡献1821条经验 获得超6个赞
该位置只是命中位置减去中心偏移量加上 y 轴偏移量:
Vector3 hitPositon = hit.Pose.position;
Vector3 meshObjectCenter = ObjectPrefab.GetComponent<Renderer>().bounds.center;
Vector3 meshObjectSize = ObjectPrefab.GetComponent<Renderer>().bounds.size;
Vector3 YAxisRevision = new Vector3(0, meshObjectSize.y / 2, 0);
ObjectPrefab.transform.position = hitPositon - meshObjectCenter + YAxisRevision;
- 1 回答
- 0 关注
- 68 浏览
添加回答
举报
0/150
提交
取消