Unity3d unity 3d如何计算末端和每个玩家之间的直线距离,然后按距离排序,
unity 3d如何计算末端和每个玩家之间的直线距离,然后按距离排序 我的代码Unity3d unity 3d如何计算末端和每个玩家之间的直线距离,然后按距离排序,,unity3d,Unity3d,unity 3d如何计算末端和每个玩家之间的直线距离,然后按距离排序 我的代码 float closest = 1000; //add your max range here GameObject closestObject = null; for (int i = 0; i < MyListOfObjects.Length; i++) //list of gameObjects to search through { float dist
float closest = 1000; //add your max range here
GameObject closestObject = null;
for (int i = 0; i < MyListOfObjects.Length; i++) //list of gameObjects to search through
{
float dist = Vector3.Distance(MyListOfObjects[i].transform.position, winpont.transform.position);
if (dist < closest)
{
closest = dist;
closestObject = MyListOfObjects[i];
closestObjects[i] = MyListOfObjects[i];
//if (closestObject.gameObject.tag == "Player")
//{
// print(MyListOfObjects[i]);
//}
print(MyListOfObjects[i].name);
}
}
float-closest=1000//在此处添加您的最大范围
GameObject ClosesObject=null;
for(int i=0;i
您可以使用LINQ按距离对集合进行排序
例如:
var objects = new List<GameObject>(); // Collection of objects
var player = new GameObject();
// Sort object, It will return in typeof IEnumerable<T>
var sortedCollection = objects.OrderBy(obj => Vector3.Distance(player.transform.position, obj.transform.position));
// Convert your IEnumerable<T> to array or List as you wish
var sortedArray = sortedCollection.ToArray();
var objects=new List();//对象集合
var player=新游戏对象();
//排序对象,它将以IEnumerable的类型返回
var sortedCollection=objects.OrderBy(obj=>Vector3.Distance(player.transform.position,obj.transform.position));
//根据需要将IEnumerable转换为数组或列表
var sortedArray=sortedCollection.ToArray();
您可以为此使用SortedDictionary
或SortedList
。这样做的目的是在对对象进行编目后进行排序,这些类型将为您完成排序。