ヘビキングを撃てを作ろう(完)

 

前回の ヘビキングを撃てを作ろう のつづきです。

今回で完結です。
あと少し、がんばりましょう。

ところで、プログラミングは今回が初めての挑戦でしょうか?
それとも、他の言語も並行して学習していますか?

「混乱するから、まずはひとつの言語に集中すべき」という考え方もあります。
ですが私は、複数の言語を並行して学ぶのも「アリ」だと思っています。
同じ言語であっても、他の学習サイトと併用するのもおすすめです。

その理由は、プログラミング脳の育成が早まるからです。
さまざまな角度からアプローチすることで、理解がより深まります。
きっと「なるほど、そういうことか!」と感じる瞬間が増えてくるはずです。

 

弾を発射しよう

プレイヤーから弾を撃てるようにします。

コントローラーA ボタンが押された時 を何もない所に配置してください。

Aボタンが押したときにを使う

 

スプライト から発射体のブロックを持ってきます。
プレイヤーから発射するので mySpriteから のブロックを使います。

A ボタンが押された時 の中に入れ、速度 vx 0 vy -85 に変更します。

発射体ブロックを使う

 

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

弾の絵を選ぶ

 

 

弾の表示優先を変えよう

弾の発射テストをしましょう。

よく見ると、プレイヤーの上に弾のスプライトが表示されています。
ゲーム制作では、基本的にプレイヤーの表示を優先させるのが一般的です。
もちろん、何らかの目的があって他のスプライトを上に重ねるのは問題ありません。

弾の絵がプレイヤーの上から発生している

 

なお、スプライトの表示順は、特に指定しない場合、
後から生成されたものが前面(上)に表示されます。
そのため、プレイヤーよりも後に発生した弾のほうが、表示の優先順位が高くなっているのです。

プレイヤーの表示優先を高くします。
スプライト から mySpriteの x を 0 にする をドラッグします。

mySpriteのXを0にするを使う

 

A ボタンが押された時 の中に入れたら x を z(奥行き)に変更します。

z(深さ)を選択する

 

z(奥行き) を 10 に変更します。
(例えば -10 にすると他のスプライトより優先が低くなります)
これで弾よりもプレイヤーの優先が高くなりました。テストしてプレイヤーの下から弾が発射されることを確認してください。

zを10に変更する

 

ごめんなさい。ここで間違いをしてしまいました。
バグ(不具合)というわけではありませんが、プログラミング的に「好ましくない」方法を取ってしまいました。

プレイヤー(スプライト)の表示優先順位の設定は、一度だけ行えば十分です。
そのため、本来は 最初だけ にブロックを置くべきでした(下図の位置が最適です)。
今回の例では、弾を発射するたびに毎回プレイヤーの表示優先を設定する形になっており、動作には影響がないものの、無駄な処理を繰り返すことになります。
今回のように軽い処理なら問題ありませんが、もしこれが重い処理だった場合、パフォーマンスに悪影響を及ぼす可能性があります。

このように、「どこで・何の処理をすべきか」を意識することは、初心者のうちから身につけておくとよいでしょう。
なお、画像の撮り直しが面倒なため、今回は修正せずにこのまま説明を続けます。

表示優先を設定するベストな場所

 

 

ヘビキングと弾の当たり判定を入れよう

当たり判定のブロックを用意します。

Food タイプの sprite が Projectile タイプのスプライト otherSprite と重なった時、に設定します。
Food がヘビキングで、Projectile が弾です。

当たり判定を用意する

 

ヘビキングに当たった弾を破棄します。
スプライト破棄のブロックを用意して otherSprite に変更しましょう。

弾のスプライトを破棄する

 

弾が当たったとき、ヘビキングに演出をのせたいと思います。
エフェクト用のブロックを用意します。

エフェクト用のブロックを用意する

 

対象を sprite、エフェクトをスマイル、 時間を 100 に変更します。

エフェクトの種類を指定する

 

当たったとき画面を揺らします。

当たったとき画面を揺らす

 

揺らす時間は 200 ミリ秒にします。

画面を揺らす時間を指定

 

テストしてみましょう。
ヘビキングに弾が当たると、うっすらと演出が入ります。
なお、画面の揺れ演出では背景は動かず、スプライトだけが揺れます。
少し残念な仕様ですが、これはMakeCode Arcadeの仕様です。

 

小ヘビと弾の当たり判定を入れよう

小ヘビとの当たり判定を作ります。
当たり判定はタイプで判断するため、小ヘビが複数いても1つの当たり判定で処理できます。

ヘビキングで作った当たり判定を複製しましょう。

当たり判定をコピーする

 

sprite のタイプを Enemy に変更します。
エフェクトと揺らすブロックは削除しましょう。

spriteのタイプをEnemyにする

 

テストしましょう。
小ヘビに当たったとき弾が消滅すればOKです。

 

スコアとカウントダウン

スコアを入れます。
ヘビキングと弾との当たり判定にスコアを入れます。ここでは 5 点追加にします。

ヘビキングと弾の当たりは5点追加

 

弾を発射するときスコアを -1 します。
ヘビキングに当たらなければ、スコアがどんどん減ることになります。

弾を発射するときスコア-1

 

最初だけ にカウントダウンを入れましょう。
時間は 15 秒に変更します。

カウントダウンを最初だけに入れる

 

テストしましょう。
スコアが 10 点を超えるように頑張ってみてください。かなり難しいですよね。

得点とカウントダウンの確認をする

 

テストしていて思ったのですが、カウントダウンやスコアの表示にヘビキングが重なってしまって見づらいですね。
ヘビの表示を全体的に下げたほうが良かったかもしれません。
(すみません、今回は対処しません)

 

開始前メッセージを表示しよう

ゲームがいきなり始まると、プレイできる状態になるまでに少し時間がかかりますよね。
特に制限時間のあるゲームでは、これは大きなロスになります。
そのため、自分の好きなタイミングでゲームを開始できるようにするべきです。

ゲーム から タイトル を表示する をドラッグします。

タイトルを表示するを使う

 

最初だけ に入れ「ゲームする?」に変更しましょう。

タイトル表示を最初だけに入れる

 

Aボタンを押すとゲーム開始になります。
ちょっとしたことですが、プレイヤーにやさしい設計になります。

Aボタンを押すとゲーム開始

 

完成

完成です。お疲れさまでした。
遊んでみてください。ヘビキングに当たらない限り、スコアはどんどんマイナスになります。

ヘビキングに当たらないとマイナス

 

小ヘビの移動速度がこのゲームの難易度になります。
誰かにプレイしてもらった時、難しそうなら速度を少し遅くするのもいいでしょう。
ところで、ハイスコアは何点でしたか?
私は 19 点でした。

ハイスコアを目指そう

 

なお、ハイスコアを表示したいときは カウントダウンが終了した時 のブロックを使って 勝ち でゲームを終了する の処理を行います。

 

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. ミニダンジョン(完)