ミニダンジョンを作ろう

 

メイクコード アーケード を使ったゲーム作り、第10弾です。

前回、前々回に続き、今回もタイルマップを使った課題に取り組みます。
「この機能を使いこなせば、ゲーム作りの幅がぐっと広がる」
—— そんな思いがあるので、今回は説明をたっぷり盛り込みました。
全体で5ページ構成になる予定です。

これまでに紹介した内容については、できるだけ説明を省略して進めます。
もし分かりづらいと感じたら、前の課題に戻って復習することをおすすめします。

 

これから作るゲーム

これはゲームではありません。
ダンジョンの作り方を学習するためのサンプルです。

まずは、抜け道(壁)とアイテムの配置についての紹介です。
「抜け道」とは、当たり判定のない壁のことを指します。
一見すると通れないように見える場所が、実は通過できるというギミックです。

抜け道とスプライト配置

 

次は、アイテムをランダムに配置する方法です。

アイテムのランダム配置

 

スイッチによる消せる壁の作り方です。

消せる壁

 

配置した敵を動かす方法です。

配置した敵の動かし方

 

以上のダンジョンギミックと、次の部屋への切り替え方をこれから説明します。

 

プレイヤーを表示しよう

新しいプロジェクトを作りましょう。
名前は「ミニダンジョン」にしました。

新しいプロジェクトを作る

 

プレイヤーを作ります。

プレイヤーを作る

 

キャラクターはこれにしました。
このキャラと同じサイズなら、どの絵でも構いません。

プレイヤーの絵を選ぶ

 

操作できるようにします。
ついでに背景色も入れます。肌色っぽい色を選びましょう。

操作できるようにする

 

プレイヤーの設定はこれで終わりです。
プレイヤーの移動テストは必ず行いましょう。

 

1つ目のマップを作ろう

タイルマップを使ってマップを作っていきます。

シーン から タイルマップを タイルマップ に設定する を持ってきます。

タイルマップを設定するを選ぶ

 

マップエディタを開きます。

マップエディタを開く

 

横に長いマップを作ります。
マップサイズは横 167 に変更します。

マップサイズを16x7にする

 

下図のように草で壁を作ります。

壁を配置する

 

当たり判定をセットします。
当たりをつけない場所を2箇所作っておきましょう。

当たり判定を入れる

 

実行してみましょう。
当たり判定を入れていない箇所をすり抜けられるか確認してください。
プレイヤーのサイズは、マップの1マスとほぼ同じ大きさのため、引っかかりやすい点に注意してください。

すり抜けられる壁をチェック

 

このようなギミックは、昔からよく使われています。
親切なゲームでは、壁の絵に少し工夫を加えて「よく見ると他と違う」と気づけるようにしていることもあります。

 

カメラを入れよう

作成したマップは画面サイズより大きいため、カメラでプレイヤーを追いかけるようにします。

シーン から カメラでスプライト mySprite を追う を持ってきます。

カメラを入れる

 

最初だけ の中に入れます。
これでスプライト mySprite つまりプレイヤーを中心にカメラが移動します。
テストをして確認しましょう。

最初だけの中に入れる

 

プレイヤーの初期配置を決めよう

現在、実行するとプレイヤーは画面中央に表示されます。
マップの絵に関係なく表示されるため、壁の上に表示されたりします。

プレイヤーは画面中央に表示される

 

このようなことが起こらないように、プレイヤーの初期位置を適切に決めておく必要があります。
ただし、座標を直接指定する方法はおすすめできません。
マップが増えるたびに、それぞれのマップごとに座標を設定し直さなければならないためです。

 

一般的な方法としては、初期位置の情報をあらかじめマップ内に組み込んでおくやり方があります。

早速やってみましょう。Dungeon の絵に切り替えて
3つの絵を使い「プレイヤーの初期位置」「コインの配置用」「脱出の階段」としてマップに組み込みます。

3つの絵を使う

 

下図のように配置します。
オレンジの玉は、あとでコインに変更します。

初期位置、コイン、階段を配置

 

実行するとこんな感じになります。
ちなみに、絵は私が適当に選んだだけで違う絵を使っても大丈夫です

配置した絵がそのまま表示される

 

シーン から mySpriteをランダムに◻︎の上に配置 を持ってきます。

mySpriteをランダムに◻︎の上に配置

 

最初だけ の中に入れたら「プレイヤーの初期位置」の絵に変更します。

プレイヤーの初期配置の絵をセット

 

mySpriteをランダムに◻︎の上に配置 ブロックについてですが、配置先として組み込んだ絵が1つしかない場合は、必ずその絵の上に表示されます。
たとえば「マップの四隅のどこか」に出現させたい場合は、初期配置用の絵をマップの四隅にそれぞれ配置しておくだけで実現できます。簡単ですね。

実行すると、プレイヤーはその初期配置用の絵の上に表示されます。

プレイヤーは初期配置の絵の上に表示される

 

初期配置の絵を消そう

初期配置用の絵はもう不要なので、削除しましょう。
これから説明するのは、マップ上の絵を消すときによく使われる手法です。
今回のように、マップの情報とプログラムが分離している場合には、マップ内の絵の情報を読み取って処理に活用します。

ループ から 配列 配列 の値を変数 値 に入れてくりかえす を持ってきます。

配列listの値を変数に入れてくりかえすを使う

 

最初だけ の中に入れます。

配列listの値を変数に入れてくりかえすを最初だけに入れる

 

シーン から すべての◻︎位置の配列 を持ってきます。

すべての◻︎位置の配置を使う

 

ループのブロックに組み込みます。
すると、配列すべての◻︎位置の配列 の中に入ってしまうので、これを取り出しゴミ箱に捨てます。

繰り返しの中に入れる

 

すべての◻︎位置の配列 の中の絵を、初期配置の絵に変更します。
これでマップ上にある初期配置の絵の情報をすべて扱えるようになります。

繰り返しの list の所に入れる

 

シーン から タイルをタイルマップ内の 0 行 0 列目に設定する をループに入れます。

タイルをタイルマップ列0行0に設定するを使う

 

を下図のようにはめ込みます。
ループするとき の中の位置情報を使って空のタイルを設定します。
つまり、初期配置の絵を消します。

値をはめ込む

 

実行して初期配置の絵が消えることを確認します。

初期配置の絵が消えた

 

このように、マップ上の絵の情報を読み取り、配置されている数だけ繰り返し処理を行う方法は、とてもよく使われます。

続きます。

 

MakeCode Arcade

  1. MakeCodeはいかが
  2. りんご狩りゲーム
  3. りんご狩りゲーム(完)
  4. ピザを避けてゲーム
  5. ピザを避けて 2
  6. ピザを避けて(完)
  7. アカウント登録
  8. ケーキ早食いゲーム
  9. ケーキ早食い 2
  10. ケーキ早食い(完)
  11. 危険ドライブ
  12. 危険ドライブ 2
  13. 危険ドライブ(完)
  14. 15秒シューティング
  15. 15秒Shooting 2
  16. 15秒Shooting(完)
  17. ブロック崩し
  18. ブロック崩し 2
  19. ブロック崩し(完)
  20. ヘビキングを撃て
  21. ヘビキング(完)
  22. ちょびっと迷路
  23. ちょびっと迷路 2
  24. ちょびっと迷路(完)
  25. でんでんジャンプ
  26. でんでんJump 2
  27. でんでんJump(完)
  28. ミニダンジョン
  29. ミニダンジョン 2
  30. ミニダンジョン 3
  31. ミニダンジョン 4
  32. ミニダンジョン(完)