- フォントは2D RogueLike同梱のやつを使用(昔のアーケードゲームっぽい)
- フロア開始前に、Floor数字を表示
- スライムを3匹倒すと宝箱出現
- 鍵をとって出口に行くと、次のフロアに行く
- シングルトンは使わずに、シーン永続
基本的なところはできました。
あとは、モンスターの種類を増やしたり、宝箱が出る条件を変えるといった処理。
タイマーが切れると、足の速い敵が来て殺しに来るとかあったかな。
ウィル・オー・ウィスプ系 (WILL-O-WISP) に移動 - )[編集]. フロアの残り時間が60秒を切った時点で登場する火の玉。フロアによっては始めから登場する。倒すことはできず、接触するとミスになるが、指輪系アイテムの取得で通過可能になる。
フロア生成に関しては、
2D RogueLikeTutorialだと、シーンとして表現してシングルトンを使ってましたが、そういうゆうのは無しで作りました。
なので、新しいフロアに行くときは、初期化処理を作る必要があります。
ダンジョン的には、ポールとポールの間の壊すことができる壁を消去
あと、残ったモンスターや残ったアイテム類を消去。あとプレイヤー自体もDestroy
消すのはこんな感じで
GameObject[] obj=GameObject.FindGameObjectsWithTag("Pole"); foreach(GameObject obs in obj) Destroy(obs);
一つ一つ検索してDestoryしたら、暴走しました。
これはおそらくDestroy直後はobjがnullにならないので、そのへんの関係だと思います。
Unityのnullはnullじゃないかもしれない - Qiita
そして、壁生成処理をやり直して、Floor情報にそってモンスターを生成する(例えば1面はグリーンスライム8匹)
Floor 1みたいな表示を挟む時に、ダンジョンの外壁とか表示されていてはまずいので、ダンジョンのSpriteをすべて、MapRootというObjectのchildにして、SetActive(true/false)で、ダンジョンの表示・非表示を切り替えました。
まだ、ダンジョンが袋小路になるって問題が残ってるんですが、ダンジョン生成の動画がありました。
まだアルゴリズムで必要な処理が残ってますねwww.youtube.com