Если вам нужно быстро найти расстояние между двумя объектами, я предлагаю вам указать это расстояние в словаре с помощью Tuple Key = (GameObject, GameObject) и Value = float:
Dictionary<(GameObject, GameObject), float>()
public Dictionary<(GameObject, GameObject), float>() calculate(GameObject[] objs)
{
var distanceArray = new Dictionary<(GameObject, GameObject), float>();
for (int i = 0; i < objs.Length; i++)
{
for (int j = i; j < objs.Length; j++)
{
if (i == j)
{
//distance between same obj is 0f
continue;
}
else
{
distanceArray.Add((objs[i], objs[j]), Vector3.Distance(objs[i].transform.position, objs[j].transform.position));
}
}
}
return distanceArray;
}
После того, как вы сможете быстро найти расстояние между двумя объектами, например так:
if (distanceArray.ContainsKey((obj1, obj2)))
{
distance = distanceArray[(obj1, obj2)];
}
else if (distanceArray.ContainsKey((obj2, obj1)))
{
distance = distanceArray[(obj2, obj1)];
}
else if (obj1 == obj2)
{
distance = 0f;
}
else
{
//Error
}
Ваш вопрос не очень прост для понимания, я просто добавляю способ вычисления расстояния после каждого нового появившегося транспортного средства:
GameObject myPrefabInstance = Instantiate(vehicle[randomInt],spawnPos.position,Quaternion.identity);
for (int i = 0; i < vehicle.Length; i++)
{
var distance = Vector3.distance(myPrefabInstance.transform.position, vehicle[i].transform.position);
Debug.Log($"Distance: {distance}");
}