为了账号安全,请及时绑定邮箱和手机立即绑定

基于坐标放置对象,而不是Unity中的中心坐标

基于坐标放置对象,而不是Unity中的中心坐标

C#
烙印99 2022-12-24 09:42:06
我正在根据屏幕动态创建网格对象。因此包含网格对象的对象总是大小相同,但网格对象具有不同的形状和大小。我想让你看到我的照片并理解它。事实上,蓝色区域是透明的。我目前正在使用移动相机在地板上拍摄 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;


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 68 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信