首页 > 解决方案 > 如何获得两个物体之间的最短距离?

问题描述

在此处输入图像描述我有两个尺寸差异很大的物体。我想找到这些物体之间的最短距离。例如,如果我在墙前有一把小椅子。我想要椅子和墙壁之间的距离。我尝试使用 Vector3.distance,但它使用世界坐标进行计算。我尝试使用对撞机来实现这一点,因为我在某处读到它是解决方案,但不清楚如何去做。有人可以帮忙吗?

我添加了一张图片来说明我想要什么。红线是我使用 Vector3.Distance 时得到的距离,但我想要的距离是绿线。如果游戏中有很多对象,我怎样才能得到我选择的两个对象之间的最短距离。

标签: c#unity3d

解决方案


在您的情况下,您可以使用this,您需要将yourObjectposition 作为第一个参数和wall.up第二个参数传递(以防您的墙向上变换指向yourObject侧面)。然后,您将在墙上收到一个点,该点垂直于墙壁投影在墙上。获取此点并使用Vector3.DistanceyourObject位置到投影点。

var pointOnWall = Vector3.ProjectOnPlane(yourObject.position, wall.up);
var closestDistance = Vector3.Distance(yourObject.position, pointOnWall);

推荐阅读