物作り冒険譚この広告は、90日以上更新していないブログに表示しています。)かなりお久しぶりの投稿になりましたが、私は元気です!このながーーーく空いた期間で、やっとスマホ向けの自作ゲーム「Trocco」を完成させることができました!リリースは4月末でしたが、その後のアプデ作業が大変でしたのでこんな時期に・・・(言い訳)さてさて、それでは無事完成したことですので、この長いゲーム制作期間中に得た知識を順々にまとめていこうと思います。「タイルベースの自動マップ生成アルゴリズム」です!0、完成後のイメージ説明の前に、完成後がどんな感じなのか、プレイ動画を見ていただけると理解しやすいです。今回は「タイルベース」なので、1平方メートルを1つのマスとしてマップを作っていきます。そのマスを埋める1平方メートルのマップチップを用意します。Unityのキューブが1立方メートルなので、これを使います。(タイルベースというよりキューブベース・・・)1直線のマップそしたらまずは原点からZ方向に直線のマップを作ってみます。適当なスクリプトを用意してカメラにでもくっつけておきましょう。}}Playボタンを押せばこんな感じになります。2曲がったマップお次はうねうねした道を作ってみます。}}こちらはこんな感じ。曲げたいところでX位置を調整してマップチップを置くが基本です。常にマップ生成の先端位置を意識しながら(超重要)マップチップを置いていくイメージですね。このままでは最初から決められた形のマップしか作れないので、ランダム要素を加えていきます。曲がったらどのくらいX方向に進むかです。コードにするとこんな感じ。乱数を用意して、その値分X方向に移動する。Maxがint型の場合、乱数はMaxを含まず、float型の場合にはMaxを含むので注意。Random.Range実際にいくつか生成してみると・・・マップチップがくっついていてわかりにくいですが、Z方向に10マス分の、ランダムな一本道が作れました。このままでは、X方向進むマスの数に制限がないので、上のGIFにも出てきましたが、乱数によっては右もしくは左方向にとんがったマップができてしまいます。Xの位置を-3〜+3の範囲に制限し、その範囲内で自由にマップ生成ができるようにします。イメージはこんな感じ。コードは上のやつにちょこっと手を加えるだけです。乱数を用意して、その値分X方向に移動する。}}できたのがこちら。(Z方向の生成数を15マスに変えてます)マップがX方向に偏らずに生成できているのが確認できました。Troccoで使用したマップの自動生成アルゴリズムの基礎はこんな感じです。この後は障害物やアイテムといったオブジェクトをランダムで生成して、ゲーム要素を増やしていく感じになります。Troccoでは、さらにX方向にマップチップを置いて肉付けしてますが、このまま一本道として、マップチップ同士がくっつかないように少し手を加えて使っても面白いですね。今回の【基礎編】は以上で終わりです。次回【実践編】では、このアルゴリズムを使用した、簡単なゲームの作り方を記事にしようと思います。(¦3[▓▓]今回紹介した、Android・iOS向けのゲーム「Trocco」です。(2)月別アーカイブ検索はてなブログをはじめよう!MegumiSoftさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。