MMF2でダンジョンの自動生成を実装する(したい) その2
とりあえず今回は、最初の手順
●マップの領域を確保し、壁で埋めて初期化する●
を、やってみることにします。
完成したデータは コチラ になります。
■解説■
今回は60×40マスのフィールドを作ってみます。
1つのチップの大きさが、32×32なので、
1920×1280のフレームを作成します。
↓ あと、オブジェクトを大量につかうので、プロパティでオブジェクト数を20000に設定
フレームエディタに入って、
壁となるオブジェクト「kabe」と
道となるオブジェクト「miti」のアクティブオブジェクトを作成。
それぞれ、大きさを32×32として、
変数Aを「通し番号(変数)」、変数B「通過フラグ(変数)」と
リネームして(後々、変数設定で混乱しないように)
「miti」オブジェクトの「通過フラグ(変数)」を1とします。
そして、壁オブジェクトをとりあえずフィールドいっぱいに複製します。
次に、オブジェクト「配列」を挿入します
2次元配列にて、数値で管理できるようにしておきたいからです。
なぜ配列管理が必要なのかの詳しい解説は(コチラ)をみてください
配列の挿入後、プロパティで
・X軸の値を60、Y軸の値を40にする(念のため)
・配列の種類→数字配列 ←超重要
・インデックスを1から開始のラジオボタンの解除 ←超重要
を行います。
さて、つくった「配列」に数値を入力していきます。
今回は初期化作業なので、60×40全要素の数値を0にします。
ここはMr.grotesqueさんのテクニックを貰っちゃいます。
①フレーム開始時に壁オブジェクトに通し番号を振る
②高速ループを、壁オブジェクトの数だけ実行する
※①と②はかならず別項目のイベントで組み込むようにすること
(↑詳しくはコチラの項目で)
③高速ループ中、かつ
壁オブジェクトの通し番号と
ループインデックスの数が等しい時の条件で
・配列に壁の変数「通過フラグ(変数)」の値を挿入。
↓ X座標には(壁のX座標)/32(チップサイズ)の値
Y座標には(壁のY座標)/32(チップサイズ)の値
この3項目をこなせば、2次元配列の全要素に
0が割り振られる・・・はずですw
いちおう、UPした完成データでは、
2次元配列が視覚的に確認できるように
カウンターを設置しております。
↓ 十字キーでひし形をスクロールさせて、全体を確認できます
これで
●マップの領域を確保し、壁で埋めて初期化する●
という作業は完了ですね。
次回は区画分けです、、実装できるか自信ないです、はいw
トラックバック(0)
このブログ記事を参照しているブログ一覧: MMF2でダンジョンの自動生成を実装する(したい) その2
このブログ記事に対するトラックバックURL: /196

コメントする