Wie finde ich die X-Objekte, die transform.position am nächsten liegen?
Posted: 21 Dec 2024, 16:49
Dieser Code zeigt, wie ich das einzelne nächstgelegene Objekt (z. B. Collider) innerhalb einer Gruppe getroffener Collider finde. Ich möchte die 4 nächstgelegenen Objekte finden. (diese Zahl könnte sich erhöhen)
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
}
Ich möchte also eine Gruppe (z. B. ein Array) der 4 Objekte zurückgeben, die transform.position am nächsten liegen. Das muss nicht sortiert werden. Es kann auf diesem Code oder einem völlig neuen Code basieren.
Vielleicht könnte es sich um eine Art Liste handeln, die nach Entfernung sortiert wird und dann die obersten X Elemente erhält. Vielleicht Linq? (Ich bin mir nicht sicher, wie man es benutzt)
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
}
Ich möchte also eine Gruppe (z. B. ein Array) der 4 Objekte zurückgeben, die transform.position am nächsten liegen. Das muss nicht sortiert werden. Es kann auf diesem Code oder einem völlig neuen Code basieren.
Vielleicht könnte es sich um eine Art Liste handeln, die nach Entfernung sortiert wird und dann die obersten X Elemente erhält. Vielleicht Linq? (Ich bin mir nicht sicher, wie man es benutzt)