【UnityC#講座】迷路の自動生成システムを改善した【配列、Switch文、List】

Unity2018.1.5f1
Windows10

迷路生成改善/トップ

【UnityC#講座】迷路の自動生成システムを作る

今回はこの記事の続きです。

・配列とSwitch文を使って上下左右のオブジェクトを判定する順番をランダムにする
・Listで消したオブジェクトの番号を保存する
・保存した場所にカメラを移動させて迷路の中を移動できるようにする

このような仕組みを実装していきます。

■判定する順番をランダムにする

以前は2マス先を判定する順番を上下右左と決まっていましたが今回はランダムにします。
配列という同じ型の値を管理する仕組みを使い順番をシャッフルし、Switch文という値によって分岐させる仕組みで対応するようにしました。
こちらがそのMinerのスクリプトです。

今回は以前と違うクラス名にしたため、それに応じてMazeGeneratorスクリプトを一部書き換えなければいけません。

Miner2 minerScr = minerObj.GetComponent();

あなたがクラス名を変えていなければ書き換える必要なありません。

さて無事動いたでしょうか?
以前より複雑な迷路を生成するようになったはずです。

迷路生成改善/以前より複雑に

スポンサーリンク

■迷路の中を歩けるようにする・Walker作成

次は迷路の中を移動できるようにするためMain Cameraにスクリプトをつけます。
名前は「Walker」にしました。
迷路の中に移動させるのですが、場所をランダムにするため判定して消したオブジェクトの値をMazeGeneratorとMinerから送るようにしました。
そしてWalkerのListで保存し、その中からランダムに選びます。
Invokeで始めてから3秒後に自動で移動するようにしました。
今回新たにMazeGenerator2とMiner2というスクリプトを作りましたが、以前作ったものを改造するだけで結構です。
不具合が出た時はGetComponentで使ったクラス名が間違っていないかチェックしてください。

Walker.cs

スクリプトでSphere ColliderとRigidbodyを加えるようにしましたが、もし加えられないようなことがあれば手動で入れてください。

迷路生成改善/Sphere Collider/Rigidbody

マウスで水平に視点を回転させます。
WASD・上下左右キーで移動します。

■迷路の中を歩けるようにする・スクリプト修正

MazeGenerator2.cs

Miner2.cs

さて、これで無事迷路の中を移動できるようになったでしょうか?

迷路生成改善/迷路の中を探索

今回はこれで終わりです。
お疲れさまでした。

■使用したアセット

■関連記事

【UnityC#講座】オブジェクトを縦横規則正しく並べて生成、色を変える、子オブジェクトにして検索する

フリーゲーム「一人称で生成迷路脱出」を公開しました

スポンサーリンク

目次に戻る