Поместите 3 объекта случайным образом в 3 указанные позиции в Unity3D - PullRequest
0 голосов
/ 10 апреля 2019

Как разместить 3 игровых объекта в диапазоне случайных положений, чтобы ни один из объектов не находился в той же позиции, что и другие 2?Как мне этого добиться?

Пока ..

public GameObject[] sprites;
int[] Position = new int[3] { 0, 5, -5 };
int resultSprite1;
int resultSprite2;
int resultSprite3;
int y;
int z;
Vector3 pos;

// Update is called once per frame
void Update()
{
    if (Input.GetKeyDown(KeyCode.R))
    {
        resultSprite1 = Position[Random.Range(0, Position.Length)];
        y = 0;
        z = 0;
        pos = new Vector3(resultSprite1, y, z);
        sprites[0].transform.position = pos;

        resultSprite2 = Position[Random.Range(0, Position.Length)];
        y = 0;
        z = 0;
        pos = new Vector3(resultSprite2, y, z);
        sprites[1].transform.position = pos;

        resultSprite3 = Position[Random.Range(0, Position.Length)];
        y = 0;
        z = 0;
        pos = new Vector3(resultSprite3, y, z);
        sprites[2].transform.position = pos;
    }
}

Как этого добиться, чтобы никакие два объекта не занимали одинаковые позиции.Все они должны быть независимы друг от друга.

Спасибо.

1 Ответ

1 голос
/ 10 апреля 2019
List<int> usedNumbers = new List<int> ();
void Update ()
{
    if (Input.GetKeyDown (KeyCode.R))
    {
        //Since it works on update. You should clear the last list before creating a new one.
        usedNumbers.Clear();
        for (int i = 0; i < Position.Length; i++)
        {
            do
            {
                number = Random.Range (0, Position.Length);
            } while (usedNumbers.Contains (number));

            //You have your unique number here.
            sprites[i].transform.position = new Vector3 (Position[number], 0f, 0f);

            //Do not forget to store your number in usedNumbersList.
            usedNumbers.Add (number);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...