メイクコード アーケード を使ったゲーム作り第9弾です。
前回、タイルマップの機能を使って極小の迷路を作りました。
絵をタイルのように並べて使えるので、迷路やRPGのフィールドのような場面で使えます。
この機能をサイドビュータイプのアクションゲームに利用したいと思います。
これまで頻繁に出てきたブロックの説明はできるだけ省略していきます。
説明が理解できないときは、当講座を初めからやり直すことをお勧めします。
やり直すときは少しアレンジしていくと楽しいですよ。
これから作るゲーム
かたつむりを操作して、ヘビを避けながらリンゴを取るゲームです。
昔、かたつむりのことをでんでん虫という人もいました。
うーん、懐かしい。

プレイヤー(かたつむり)は左右のみ移動できます。
A ボタンでジャンプします。
ヘビをかわしてリンゴを取りましょう。
なお、ヘビに当たったりリンゴを取り損ねるとライフが減ります。
背景を入れよう
新しくプロジェクトを作成します。
プロジェクトの名前を入力して 作成 ボタンをクリックします。

最初だけの中に背景画像を○に設定を入れます。
絵は下図のものがいいと思います。森の中っぽいですよね。

タイルマップを使おう
さっそく、タイルマップの出番です。
シーン から タイルマップ○を設定する をドラッグします。

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

ページの左下にあるマップサイズを変更します。
横 10 縦 8 にします。
この値が実際の画面サイズとほぼ同じになります。

ぺんツールを使って草を描きます。
草の絵は Forest の3ページ目にあります。

当たり判定を付けます。
いま何をしているのか分からない人は ちょびっと迷路を作ろう をやり直しましょう。

タイルマップの下準備はここまでです。
実際の効果はプレイヤーを入れて初めて分かります。
プレイヤーを用意しよう
最初だけの中にプレイヤーのスプライトを用意します。

絵は次のものを選びました。

プレイヤーに重力(下に加速する力)を加えます。
スプライト から mySpriteのxを0にする をドラッグします。

mySprite の ay(y方向の加速度)を 500 に設定します。
これが下に加速する力です。

実行してみましょう。
プレイヤーは草の位置まで落ちます。
タイルマップを使って草のところに当たり判定を入れたので、草の位置で止まります。
この課題で一番説明したかったことが「タイルマップで地面を作る」です。
このような使い方は特殊ではなくサイドビューのアクションゲームでよく使います。
横スクロールのゲームもいつか記事にしたいと思います。

移動できるようにします。
左右のみに限定するため速度 vx 100 vy 0 にします。

左右に移動できるかテストしてみましょう。
画面の端まで移動してみてください。画面外へ出ないで止まります。

「どうして画面外へ出ないの?」
と思った人は鋭いです。まだ set mySprite stay in screen を使っていないので普通は画面外へ出てしまいます。
これはタイルマップを使っているためです。
タイルマップで設定したマップサイズより外へ移動させることができなくなるのです。
ジャンプさせよう
Aボタンでジャンプできるようにします。
コントローラー から Aボタンが押した時 を用意します。

ジャンプ、つまり上に跳ね上がるための速度を加えます。
mySprite のay(y方向の加速度)を 500にする をコピーして Aボタンが押した時 に入れます。

mySprite の vy(速度y)を -200 に変更します。
上に向かっての力が必要なのでマイナスになります。
-200 という数値は何度かジャンプを試してみて決めました。
重力は下に引っ張ることで加速するのに対し、ジャンプに必要なのは初期速度だけです。
そのため vy(速度y)をセットしました。
これも結局、重力により下に引っ張られ、やがて落下するのでジャンプの動きになります。

実際にテストしてみてください。
プレイヤーの動きを見て、
「Aボタンを押したとき、上に向かって力が発生し上に移動するけど重力に引っ張られて落ちるのか」
みたいな思考ができれば、これからのゲーム作りも捗ります。
ジャンプは地面から
さて、実際にテストしてみましたか?
不具合がなかったですか?
しっかりありました。ジャンプ中にジャンプできてしまいますね。
ジャンプし放題でゲームになりません。

理由は簡単です。
Aボタンを押すたび、上に向かって力(速度y)を加えているためです。
条件判断を使って地面にいるときだけジャンプできるようにします。
論理 から もし 真 なら を持ってきます。

Aボタンが押した時 の中に入れます。

地面、つまり壁に当たっているかどうか調べるためのブロックを用意します。
シーン から mySpriteが左の壁に当たった を持ってきます。

条件判断の中に入れます。
地面、つまり下の壁なのかを判断したいため 下 に変更します。
作業が終わったらテストしましょう。地面の上にいるときだけジャンプできます。

「壁ってなんだ?」と思いましたか。
条件判断に入れたブロックは シーン から持ってきました。
タイルマップの機能は シーン の中に用意されています。
「壁」とは、タイプマップエディタで当たり判定を入れた場所、および、タイルマップ外を指します。
プレイヤーの絵の向きを変えよう
プレイヤーの絵を進む向きに合わせたいと思います。
左右のボタンを押している時に絵を変更します。
まず 右ボタンが押した時 を用意します。
Aボタンが押した時 をコピーしてもいいし、コントローラー
から持ってきてもいいです。

スプライト から mySpriteの画像を○にする を持ってきます。

右ボタンが押した時 の中に入れてスプライトエディタを開きます。

まず、ギャラリーからカタツムリの絵を選びます。
そして上部にある 左右反転 のアイコンをクリックします。

右向きの絵になりました。

右のときと左のとき、2つの処理を作ります。
左のときは反転させず、ギャラリーから選んだままでいいです。
終わったらテストしましょう。

次回に続きます。