Объекты не появятся в правильном месте - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь генерировать кубы в случайном порядке.

Сначала в мире появляется куб. Затем генерируется случайное число. Это число определяет, где будет создан следующий куб. Давайте назовем это cube1 После того, как cube1 порожден, cube2 должен использовать позицию cube1 для появления, но он все еще использует позицию исходного куба.

Я не могу понять почему.

Я уже пытался использовать Debug.Log для просмотра разных позиций, но я не могу заставить его работать независимо от того, что я пытаюсь.

public class GenerateDungeon: MonoBehaviour {

    public GameObject[] cells;
    public int number = 0, i = 0;

    public void Start()
    {
        Instantiate(cells[i], new Vector3(0, 0, 0), Quaternion.identity);

        while(i < 2)
        {
            number = Random.Range(1, 5);

            i++;

            if (number == 1)
            {
                Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(0, 4, 0), Quaternion.identity);
            }
            else if (number == 2)
            {
                Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(4, 0, 0), Quaternion.identity);
            }
            else if (number == 3)
            {
                Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(0, -4, 0), Quaternion.identity);
            }
            else if (number == 4)
            {
                Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(-4, 0, 0), Quaternion.identity);
            }

        }
    }
}

Я не получаю никакой ошибкисообщения, но это не работает так, как я хотел.

1 Ответ

0 голосов
/ 28 октября 2019

При вызове Instantiate первый аргумент - это объект, который нужно скопировать, а не ссылка на место назначения, в которое он копируется.

Итак, вам, вероятно, нужно сохранить ссылку на исходный объект:

public GameObject CubeToCopy;

И затем при создании экземпляра вы хотите скопировать каждый из них в массив следующим образом:

cells[i] = Instantiate(CubeToCopy, [...]);

Таким образом, массив «ячейки» хранит объекты, которые вы на самом деле создаете,и ваша логика положения должна начать работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...