前回の ピザを避けてゲームを作ろう のつづきです。
ところで、MakeCode はプログラミング学習プラットフォームだということを知っていましたか?
MakeCode Arcade はゲーム制作に特化した環境ですが、実はそれ以外にもさまざまなことができます。
例えば、micro:bit や LEGO MINDSTORMS を操作したり、Minecraft でプログラミングすることも可能です。
興味があれば、「MakeCode」で検索してみましょう!
きっと、新しい発見がありますよ。
ピザを発生させよう
ピザを発生させます。
スプライト の中から、黄色で示されたブロックをドラッグします。
このブロックはリストの下の方にあるので、スクロールして探してください。
似たブロックがありますが 発射体○を横から のブロックを選択してください。
間違えないように注意しましょう!

ゲームが更新された時 の中に入れます。

絵を選択します。

ギャラリーでピザの絵を選びます。
ピザの絵は2つあります。絵のキレイな方(解像度の高い方)を選びます。

ピザの画像を指定すると、画面の左上から右下へ向かって、連続して移動するようになります。
・vx 50 は、ピザが右方向へ 速度50 で移動することを意味します。
・vy 50 は、ピザが下方向へ 速度50 で移動することを意味します。
また、ピザの発生間隔は 500ミリ秒(0.5秒) です。

速度 vx を 0 に設定します。
これにより、横方向の移動がなくなり、ピザは真下に落ちるようになります。

0 に変更できない場合、入力が全角モードになっている可能性があります。
数値はすべて半角で入力してください。
ピザを画面いっぱいに降らせよう
ピザを画面幅いっぱいに降らせます。
スプライト の mySpriteの位置をx0y0にする をドラッグします。

ゲームが更新された時 の中に入れます。

mySprite を projectile に変更します。

乱数を使います。
計算 の 0 から 10 までのランダムな数字 をドラッグします。
下の方にあるのでスクロールして見つけましょう。

下図を参考に x の所へ入れます。

0 から 160 までに変更します。
これで画面幅いっぱいに広がります。

スプライトの中心点を意識しよう
ここで、シミュレーターでピザの発生をよく観察してみましょう。
ピザが突然現れるのが分かります。
これは、スプライトの表示位置が中心点を基準にしているために起こります。
より自然に見せるために、ピザが画面の端からスッと現れるようにしましょう。
そのために、表示座標を少し上に調整します。

変数 projectile の y 座標を -15 に変更します。

-15 にした理由は、絵のサイズが 32x32 だからです。
ピザの絵のエディタを開いてみてください。幅と高さが確認できます。

ここから少し難しい話をします。
「余裕を持って -30 にしてもいいのでは?」と思う人もいるかもしれません。
しかし、ピザのスプライトは発射体です。
発射体には 画面外に出ると自動的に消滅する という特徴があります。

つまり、発射位置を画面の外に設定しすぎると、
ピザが発生した瞬間に消えてしまうのです。
そのため、画面に少しでも表示される座標で発生させる必要があります。
また、発射体を作るブロックには 2種類 あるので、間違えないように注意しましょう。

ちなみに、発射体が画面外で自動消滅する機能はとても便利です。
ゲームによっては、処理が重くなったり、最悪の場合は強制終了してしまうことがあります。
その原因のひとつが、発生させたスプライトを削除しないことです。
この機能のおかげで、そうしたリスクを減らすことができます。
当たり判定を入れよう
プレイヤーとピザの当たり判定を入れます。
スプライト の中の黄色で指定したブロックをドラッグします。
下の方にあるのでスクロールして見つけてください。

当たり判定のブロックは、連結させずに外に配置します。

ところで、配置するブロックが増えると、空いているスペースが狭くなってきますよね。
そんなときは、編集エリアをドラッグ操作で上下左右に移動できます。
うまく活用して、作業しやすいレイアウトを保ちましょう。
Player と Player の当たり判定になっているため、片方を Projectile(発射体)にします。

次は、プレイヤーがピザに当たったときに、ピザを破壊する処理を追加します。
すぐに破壊しないと、何度も当たり判定が発生してしまうので注意しましょう。
スプライト の mySpriteを破壊するをドラッグします。
下の方にあるのでスクロールして見つけてください。

mySpriteを破壊するが見つからないとき、表記が英語になっている可能性があります。
次のブロックを選びましょう。
MakeCode Arcade のバージョンアップが行われたとき、日本語化されないこともあるようです。

mySpriteを破壊するを当たり判定の中に入れます。
Projectile を破壊するため、mySprite を otherSprite に差し替えます。
外に押し出された mySprite はゴミ箱に捨てましょう。

シミュレーターで確認しましょう。
プレイヤーとピザが当たったとき、ピザが消えれば成功です。
続きます。
次回で完結です。