Сначала быстрое сокращение моего кода ..
здесь у меня есть два массива, GameObject и массив с плавающей точкой ..
public class PlaceManager : MonoBehaviour
{
private GameObject[] playerList;
private float[] distanceValue;
При запуске я вызываю FindAllPlayersФункция и при обновлении я вызываю две функции.
void Start()
{
FindAllPlayers();
}
void Update()
{
FindPlayerXValues();
DeterminePlace();
}
Функция FindAllPlayers состоит в том, чтобы найти все объекты с тегом «Player» и назначить индексный номер игроку (позже он будет заказан игроками.слот для многопользовательской игры, например, player1, player2 и т. д.).
public void FindAllPlayers()
{
if (playerList == null)
{
playerList = GameObject.FindGameObjectsWithTag("Player");
for (int i = 0; i < playerList.Length; i++)
{
playerList[i].GetComponent<CharacterStats>().playerNumber = i;
}
}
}
Цель FindPlayerXValues - заполнить массив distanceValue позицией X всех игроков и назначить их по порядку в порядкеони были заполнены в массиве playerList.(Это также делает playerList [1] == distanceValue [1]!)
public void FindPlayerXValues()
{
if (playerList != null)
{
distanceValue = new float[] { playerList[0].transform.position.x * -1,
playerList[1].transform.position.x * -1,
playerList[2].transform.position.x * -1,
playerList[3].transform.position.x * -1,
playerList[4].transform.position.x * -1};
}
}
И функция DeterminePlace сначала сортирует массив distanceValue.Далее он обновляет позицию.
Мой план состоит в том, чтобы он захватывал переменную myPosition из связанного элемента массива playerList, а затем назначал порядковый номер, где находится связанный элемент distanceValue после сортировки.
public void DeterminePlace()
{
Array.Sort(distanceValue);
for (int i = 0; i < distanceValue.Length; i++)
{
playerList[i].GetComponent<CharacterStats>().myPosition = Array.IndexOf(distanceValue, distanceValue[i]);
}
}
}
По состоянию напрямо сейчас переменная игроков myPosition остается неизменной независимо от того, где расположен элемент distanceValue.Вот как я ожидал, что это сработает.
[0]=distanceValue[0] = 1st Place --> [0]=distanceValue[3] = 1st Place
[1]=distanceValue[1] = 2nd Place --> [1]=distanceValue[0] = 2nd Place
[2]=distanceValue[2] = 3rd Place --> [2]=distanceValue[1] = 3rd Place
[3]=distanceValue[3] = 4th Place --> [3]=distanceValue[2] = 4th Place
[4]=distanceValue[4] = 5th Place --> [4]=distanceValue[4] = 5th Place
Это то, что кажется реальностью ...
[0]=distanceValue[0] = 1st Place --> [3]=distanceValue[3] = 4th Place
[1]=distanceValue[1] = 2nd Place --> [0]=distanceValue[0] = 1st Place
[2]=distanceValue[2] = 3rd Place --> [1]=distanceValue[1] = 2nd Place
[3]=distanceValue[3] = 4th Place --> [2]=distanceValue[2] = 3rd Place
[4]=distanceValue[4] = 5th Place --> [4]=distanceValue[4] = 5th Place
Что я могу реализовать в своем коде, чтобы получить что-то ближе кпервый результат?
Заранее спасибо за помощь!