Здравствуйте, уважаемые разработчики,
, как я сказал в заголовке, я хотел знать, может ли кто-нибудь помочь мне с этой проблемой.Я новичок, как никогда прежде не играл с 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;
}
}
}
}