此代码显示了如何在一组碰撞碰撞器中找到最接近的单个对象(例如碰撞器)。我想找到最近的 4 个物体。 (这个数字可能会增加)
Collider closestCollider = null;
float closestColliderDistance = float.PositiveInfinity;
foreach (Collider collider in hitColliders)
{
float distance = Vector3.Distance(collider.transform.position, transform.position);
if (distance < closestColliderDistance)
{
closestColliderDistance = distance;
closestCollider = collider;
}
}
if (closestCollider != null)
{
// handle it
}
所以我想返回距离transform.position最近的4个对象的一组(例如数组)。这个不需要排序。它可以基于此代码或全新的代码。
也许它可能涉及某种按距离排序的列表,然后获取前 X 个项目。也许是林克? (不知道怎么用)
嗯,是的,只需按距离排序,然后拿 X 件物品
var xClosestItems = hitColliders.OrderBy(o => (o.transform.position - transform.position).sqrMagnitude).Take(X).ToList();
其中
X
表示达到所需数量 - 如果 hitColliders
没有足够的物品,可以减少