我有Vector3数组:
public Vector3[] positions;
我将此对象的对象和位置存储在Vector3变量中。
我有第二个Vector3数组:
public Vector3[] four;
我需要从数组位置找到4个最接近对象的向量,并将它们放入数组 4 。
我正在考虑如何做几个小时,但我真的不知道怎么做。请给我一些想法(请用C#)。
答案 0 :(得分:3)
这应该有效。它计算myObject和所有位置之间的所有距离,并将它们与位置索引一起存储。
然后根据距离对此结果进行排序。
最后它获取前4个结果并使用存储的索引来获得正确的位置。
using UnityEngine;
using System.Collections.Generic;
public class Distance
{
public float distance;
public int index;
public Distance( float distance, int index )
{
this.distance = distance;
this.index = index;
}
}
class MyGame
{
Vector3[] positions;
Vector3 myObject;
Vector3[] four = new Vector3[4];
List<Distance> distanceList = new List<Distance>();
void Foo()
{
for( int i = 0; i < positions.Length; i++ )
{
// get all the distances
float distance = Vector3.Distance( positions[i], myObject );
// store the distance with the index of the position
distanceList.Add( new Distance( distance, i ) );
}
// sort the distances
distanceList.Sort( delegate (Distance t1, Distance t2) { return (t1.distance.CompareTo(t2.distance)); } );
for( int i = 0; i < 4; i++ )
{
// get the first four sorted distances
int idx = distanceList[i].index;
// use the stored index
four[i] = positions[idx];
}
}
}