あるフロアの中に障害物を作るのはいいんですが、これを色々と壁や穴を作るとなるとかなり大変。特に穴なんて開けるのは…。
…でれば、そもそも全体のフロアを作って、その上に壁を作ったりするのではなく、小さいフロアのパーツを何パターンか作ってしまい、それを配置する方向にすればいいんじゃない?とふと思いました。
…ということで、適当にパーツを作成。
■ Floor1 (ただの平面)
■ Floor2 (真ん中に大きなCube)
■ Floor3 (真ん中に45度回転のCube)
あとは、それを初期化時に配置するように定義。
public GameObject StartFloorPrefab;
public GameObject EndFloorPrefab;
public GameObject Floor1Prefab;
public GameObject Floor2Prefab;
public GameObject Floor3Prefab;
// Start is called before the first frame update
void Start()
{
// STARTとENDの床を配置 //
GameObject startFloor = GameObject.Instantiate(StartFloorPrefab);
GameObject endFloor= GameObject.Instantiate(EndFloorPrefab);
for (int i = 0; i < 50; i++)
{
// Floor1をランダムな場所に配置する //
GameObject randomFloor1 = Instantiate(Floor1Prefab);
randomFloor1.transform.position = new Vector3(Random.Range(-5, 5), 0, Random.Range(-5, 5));
}
for (int i = 0; i < 10; i++)
{
// Floor2をランダムな場所に配置する //
GameObject randomFloor2 = Instantiate(Floor2Prefab);
randomFloor2.transform.position = new Vector3(Random.Range(-5, 5), 0, Random.Range(-5, 5));
}
for (int i = 0; i < 10; i++)
{
// Floor3をランダムな場所に配置する //
GameObject randomFloor3 = Instantiate(Floor3Prefab);
randomFloor3.transform.position = new Vector3(Random.Range(-5, 5), 0, Random.Range(-5, 5));
}
}
適当な部品しか作っていないので、大したステージにはなりませんが、まあいい感じになりました。
部品のパターンを増やしたり、パーツによってその範囲に配置するかなどを組み合わせたりすることで、もっといろいろとできそうですね。