簡単に2Dゲームのステージを作成する方法 ---TileMapEditor?何それ?---
UnityのUIは素晴らしいと思いますが、2Dゲーム開発においてはスクリプトを多用したほうが楽な事が多々あります。
例えば2Dステージのブロックの配置とか。
blockのprefabを作成しておけば以下の記述で 配置が完了します。
string[] stage = { "b bb b", "b b b", "bbbbb bbb b", "b bb b", "b bbb b", "bbb bbb", "bbbbbbbbbbb" }; void Start() { for (int i = 0; i < stage.GetLength(0); i++) { for (int j = 0; j < stage[i].Length; j++) { if (stage[i].Substring(j, 1) == "b") { Instantiate(block, new Vector3(startX + j * massWidth, startY - i * massHeighth, 0.0f), Quaternion.identity); } } } }
blockの画像をこれにしておくと
結果はこう。
strign型の配列で、bと記載がある箇所にblockを配置するというコードです。
int型かchar型の二次元配列でも可能ですが、数字・文字間にカンマ・シングルクオテーションが必要で、配列が間延びするという欠点があります。
加えて桁数が増えると上下の配列に書かれた数字が左右にずれてしまい、作製途中のステージをイメージしにくくなります。
またint型の場合、1桁だけだと0~9しか使えないため、10個しかオブジェクトを選択できないという欠点があります。
試行錯誤の末、視認性が良いStringに落着きました。
文字に応じて呼び出すprefabを変えれば、簡単に多様なステージを作れます。
例えば内側に草を生やしたblockにしたければ
ちょっと細工をすると3Dっぽい雰囲気も出せます。
キャラクタやアイテムや敵の初期位置も同様の方法で作成可能です。
同じブロックをちりばめると、見た目が安っぽいゲームになってしまうのが問題か。