c# - 如何获得两个物体之间的最短距离?
问题描述
我有两个尺寸差异很大的物体。我想找到这些物体之间的最短距离。例如,如果我在墙前有一把小椅子。我想要椅子和墙壁之间的距离。我尝试使用 Vector3.distance,但它使用世界坐标进行计算。我尝试使用对撞机来实现这一点,因为我在某处读到它是解决方案,但不清楚如何去做。有人可以帮忙吗?
我添加了一张图片来说明我想要什么。红线是我使用 Vector3.Distance 时得到的距离,但我想要的距离是绿线。如果游戏中有很多对象,我怎样才能得到我选择的两个对象之间的最短距离。
解决方案
在您的情况下,您可以使用this,您需要将yourObject
position 作为第一个参数和wall.up
第二个参数传递(以防您的墙向上变换指向yourObject
侧面)。然后,您将在墙上收到一个点,该点垂直于墙壁投影在墙上。获取此点并使用Vector3.Distance
从yourObject
位置到投影点。
var pointOnWall = Vector3.ProjectOnPlane(yourObject.position, wall.up);
var closestDistance = Vector3.Distance(yourObject.position, pointOnWall);
推荐阅读
- r - 在 Rmarkdown 中编织到 pdf 时,代码离开页面
- sql - 如何使用 TypeORM 创建这个 ViewEntity?
- c - 多次调用函数 - (将函数作为参数传递) - C
- python - 我需要 Python OpenCV 中检测到的对象的日志数据
- linux - 在 perf 中了解内核符号与我的应用程序的关系
- dart - 即使是同一类型,也无法分配 Dart 函数参数
- redux - redux-toolkit 在来自另一个 thunk reducer 的同一切片中使用 actionCreater
- python - 如何在 Pandas Dataframe 中使用 Groupby 分位数
- bash - 在文件 BASH 中的两个其他字符串之间选择一个字符串
- c++ - 在调用 std::bind 的乘积后意外调用析构函数