unityでローグライクゲームの作り方!Part3

記述コードの解説

このページでは下記コードの解説していきます。

 

62行目のBoardSetup関数について

まずBoardと言うobjectを生成し、boardHolderに設定する

これはBoardをフィールドとみなして、

その配下にアイテムや壁を生成することで整理するために行っている。

 

67~82行目はループを使いフィールドを生成。

下記の図を見てください

フィールドは10×10で生成されており、
一番外側は破壊不可な外壁を設置する場所。

8×8はplayerが移動可能な範囲で、
なおかつ床を設置する場所。

Playerが現在立っている位置を(0,0)としているため、
外壁が配置されるのはx,yのどちらかまたは両方に-1or8の位置がある時になる。

なのでループの開始を-1から始め10進んだ数値の8までループが回るようにし、
位置に-1or8が含まれていたら外壁、それ以外は床を配置するようにしている。

 

90行目のInitialiseList関数について

上記画像の6×6の場所をリストに数値としてgridPositonsに保持する

このgridPositonsに保持されている数値たちは、objectが無い状態なので、

アイテムを配置する際にこのリストを使う。

 

108行目RandomPosition関数について

randomIndexにgridPositonsに保持されている位置の要素数から
ランダムに数値を選び設定する。

randomPositionにgridPositonsの
randomIndexに保持されている場所を設定する。

一度randomPositionに設定された数値は削除して、
アイテムが二重で置かれることがないようにしている。

 

123行目LayoutObjectAtRandom関数について

アイテムごとに決められた、
最小最大値からランダムでアイテムを設置するべき数値を決める。

決められた数値objectCount分ループで回して、
randomPositionに設置していく。

unityでローグライクゲーム作成まとめ

今回はPart3と言うことで

Mapのランダム生成を行うために、

C#コードの記述や
その解説をメインに行っていきました。

 

少し複雑で、
わかりにくいかもしれませんが

何度か読み返せば
自分で理解して、

今後別のゲームでも
Mapをランダム生成する時に

役立つことになると思います!

 

 

次回はUnit用の抽象クラス作成と
Animationの設定を行っていきます

関連記事

皆さん、こんにちは!うっちーです。 part4では Unit移動用の抽象クラス UnitAnimationの実装を行っていきます。 ちなみにチュートリアル動[…]

 

 

 

p.s

これからunityを使って
ゲームを作ってみたい人、

現在使い始めたばかりの人は
ぜひLINE@に参加してみてください!

 

私がunityを始めたばかりの頃、

  • どうやって勉強をすればいいのか
  • オススメの教材は
  • 何をすればいいのか

迷うことが多く、
無駄な時間を多く過ごしてしまいました。

さらに諦めそうにもなったことも・・。

 

そしてこれらは

unityを多少なりともやってきている人に
聞ければ解決できる問題です。

 

そこで微力ですが、

初心者のみなさんを
サポートできればと思いLINE@を始めました!

主に

  • 進捗報告&質問の受付
    (返信できる回数に限りがあるので、全てに返信はできないかもしれませんが)
  • オススメ教材のクーポン情報を配布

などでサポートしています

 

興味がある方は気軽にこちらを覗いてみてください!

LINE@でお待ちしております。