前回の ミニダンジョンを作ろう のつづきです。
私はプログラミングに興味がある人に「ゲームプログラミング」を課題にした学習を勧めています。
理由はゲームを作るという課題がとても優れているからです。
良い点として
・1本の完結したプログラムを課題にできる
・アレンジ(カスタマイズ)し易い
などがあります。
タイトルから始まってゲームプレイ、そしてゲームオーバーまでを作ることで完結します。
リトライ機能を入れるなら全体の設計を理解して作る必要もあります。
また、小さいアレンジから大幅な改造までやり放題です。
キャラの色を変えるだけでも、アイテムや敵を増やすなども学習になります。
自分で何か新しいゲームを作ってみようかな、と考える機会も増えると思います。
コインを表示しよう
タイルマップの絵をスプライトに差し替える方法を説明します。
基本的にはタイルマップの絵をそのまま使ってもいいと思います。
ただ、絵をアニメーションさせたい、絵に合った当たり判定をしたい、などの時はスプライトへの差し替えは必要になります。
前回のプレイヤーの初期配置の絵を消した方法を使って、タイルマップの絵からスプライトへの差し替えをやってみましょう。
今回は、赤い玉をコインのスプライトに変えます。
下図のようにループをコピーしてください。
そして絵を赤い玉に変更します。
ループの中に空のタイルと差し替える処理が入っているので、
実行すると赤い玉が消えます。
もう簡単ですね。
コインのスプライトを追加してください。
変数名を coin に変えましょう。
「別に変えなくても動くじゃん」
と思っていると将来はダメプログラマーになります。気を付けましょう。
タイプも変更します。
タイプ変更のメニューを開いて 新しいkindを追加する をクリックします。
coin という新しいタイプを作ります。
変数名を coin 、タイプを coin に変更しました。
ちなみに、タイプ coin は当たり判定のとき使います。
コインの絵を赤い玉のあった場所に配置する必要があります。
シーン から mySpriteをタイルマップ列0行0の上に配置 を持ってきます。
coin を 値 の上に配置にします。
実行してコインが表示されることを確認します。
コインの当たり判定を入れよう
プレイヤーがコインをゲットできるようにします。
スプライト から当たり判定を持ってきます。
otherSprite を coin タイプに変更します。
ゲットしたコインを消す処理を作ります。
スプライト から destroy を持ってきます。
削除対象を otherSprite にしてスプレーの演出も入れましょう。
情報 から スコアを 1 変える も追加します。
テストしましょう。
コインをゲットしてスコアが入ることを確認します。
ちょっとさびしいのでコインが上に移動する演出を入れます。
スプライト から mySpriteのXを0にする を持ってきます。
otherSprite の vy(速度 y)を -50 にします。
これでゲットしたコインは消えるまで上に移動するようになりました。
実行して確認しましょう。
マップを切り替えよう
複数のマップを使うということは、当然、マップを切り替えることになります。
論理 にある条件判断を使っても切り替えはできますが、配列を使ってやってみたいと思います。
配列とは複数の入れ物をまとめて管理できるようなものです。
今回はマップを入れて切り替えに使いますが、様々な用途に利用できます。
配列 は 高度なブロック の中にあります。
配列 を開いて下図のブロックを持ってきます。
切り替えはマップの処理をする前に変更したいので下図の所に入れます。
ここで処理の順番を変えたいと思います。
カメラでスプライトmySpriteを追う はマップ内容に関係なくいつでも実行するものなので、マップ切り替えの前に持ってきます。
一度、カメラでスプライトmySpriteを追う 以下の処理を 最初だけ から外します。
カメラでスプライトmySpriteを追う だけ残し、あとは元に戻します。
カメラでスプライトmySpriteを追う を配列変更の前に入れます。
タイルマップのデータを配列の 0 番目の中に入れます。
配列は 0 からカウントします。注意しましょう。
2つ目のマップを作成しよう
2つ目のマップを作成します。
シーン から tilemap を持ってきます。
注意:
2つ目も1つ目のようにコピーすればいいと思っているとハマります。
tilemap の入れ物はコピーされません。
tilemap を配列の 1 番目(右側)に入れます。
入れた tilemap をクリックしてエディタを開きます。
マップサイズを横 10 縦 12 に変更します。
下図を参考に壁を描きましょう。
絵を Dungeon に切り替えて3つの絵を追加します。
これらは「プレイヤーの初期位置」「壁を消すスイッチ」「脱出の階段」になります。
絵を Miscellaneous に切り替えて岩を追加します。
この岩をスイッチで消すことになります。
壁と岩に当たり判定を入れます。
これで2つ目のマップは完成です。
配列の名前を作ろう
変数名を「配列」という名前のままではよくありません。
メニューを出して 変数を作成する をクリックします。
変数名 map を作ります。
続きます。