Unity3d 寻找最近物体的最佳方法

Unity3d 寻找最近物体的最佳方法,unity3d,graphics,3d,distance,closest,Unity3d,Graphics,3d,Distance,Closest,给定三维空间中的一组点,我需要找到离给定点最近的点p 我希望优化此搜索的性能。目前,我使用大小平方作为度量来比较距离,因为与欧几里德距离相比,它具有明显的优化效果(需要计算平方根) 我知道曼哈顿距离的存在。然而,我不确定这个指标是否可以用于这种情况。我需要正确地进行评估 在性能方面,是否有更好的方法实现此计算?可能将点存储在专门的数据结构中,或者使用不同的度量 我读了相关的问题(),但仍然想知道比较的最佳指标。你需要每帧做一次还是只做一次?我需要每帧做一次,针对不同的p。如果你只需要每帧做一点,

给定三维空间中的一组点,我需要找到离给定点最近的点
p

我希望优化此搜索的性能。目前,我使用大小平方作为度量来比较距离,因为与欧几里德距离相比,它具有明显的优化效果(需要计算平方根)

我知道曼哈顿距离的存在。然而,我不确定这个指标是否可以用于这种情况。我需要正确地进行评估

在性能方面,是否有更好的方法实现此计算?可能将点存储在专门的数据结构中,或者使用不同的度量


我读了相关的问题(),但仍然想知道比较的最佳指标。

你需要每帧做一次还是只做一次?我需要每帧做一次,针对不同的
p
。如果你只需要每帧做一点,我想你目前的解决方案是最好的方法。如果您需要对每帧多个点执行此操作,您可以受益于kd树或其他数据结构,具体取决于点的数量以及每帧需要计算的最近点的数量。唯一的方法是使用平方幅值而不是幅值,因此您可以跳过平方根计算。您还可以最小化每帧的计算量。例如,如果您有一个已排序的集合,并且您知道您的代理每秒移动不超过x个单位,那么您可以放弃集合的结尾,因为您知道它们太远了。例如,每秒只执行一次完整的收集,在第二次收集的剩余时间内只运行前10或20次,因为其他对象无法到达。我知道您正在尝试使用最快的算法在Unity3d中查找对象。但我希望你能意识到,为了让它正常工作,你在引擎中努力询问它们在哪里,它们在什么地方。也就是说,您可以启动查找方法,然后引擎将搜索并获取对象。在大多数情况下,这将更加困难。我的建议是充分利用Unity3D将为您提供的服务。而不是应用算法。你为什么不直接使用一个invi Hitbox,一个先点击它的函数将是最接近的。缺点:盒子需要移动。只是一个替代品