Как поместить GameOject в ячейку массива bool в c # Unity с помощью цикла - PullRequest
0 голосов
/ 16 декабря 2018

Здравствуйте, уважаемые разработчики,

, как я сказал в заголовке, я хотел знать, может ли кто-нибудь помочь мне с этой проблемой.Я новичок, как никогда прежде не играл с Unity, и мне жаль, если это глупый или очевидный вопрос, но я действительно не вижу его.

Я должен использовать выборку отклонения, чтобы избежать столкновения вUnity и gamobjects, созданные с помощью скрипта (prefab), должны быть размещены в сетке из 20x20 ячеек, где Array, который строит эту сетку, является 2D bool Array.Каждый Gameobject должен быть посажен в одну ячейку сетки, и значение ячейки должно стать истинным, чтобы другие объекты не могли быть построены в этой ячейке впоследствии.Я думаю, что я должен вычислить размер ячеек, но я действительно не знаю, как это сделать.

Я уже пробовал этот пример ниже, но он по-прежнему создает игровые объекты, которые сталкиваются, поэтому он не работает.

Если у вас есть какие-либо идеи или полезные советы, это было бы замечательно.

    public void plant(){
    root = new GameObject();
    root.transform.parent = gameObject.transform;
    bool[,] Cell = new bool[20, 20];
    for(int a = 0; a < 20; a++){
        for(int b = 0; b < 20; b++){                
            if(Cell[a,b] == false){
                GameObject obj = Instantiate(objPrefab);
                obj.transform.parent = root.transform;

                float x = Random.Range(-50.0f, 50.0f);
                float z = Random.Range(-50.0f, 50.0f);  

                float scale = Random.Range(80.0f, 140.0f);
                float rotation = Random.Range(0.0f, 360.0f);


                obj.transform.localPosition = new Vector3(x,0.0f,z);
                obj.transform.Rotate(new Vector3(0.0f,rotation,0.0f), Space.World);
                obj.transform.localScale = new Vector3(scale,scale,scale);
                Cell[a,b] = true;
            }
        }   

    }                   

}
...