初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

子どもでもわかる Scratch 入門

23.インベーダーゲームを作ろう その5

 

[ 22.インベーダーゲームを作ろう その4 ] の続きです。

自機のビームに当たり判定を入れて、敵を撃墜できるようにしました。
また、敵もビームを発射する仕組みを作りました。

 

 

自機が爆発する絵を用意しよう

ビームにやられて自機が爆発する絵を用意します。

リミックスした人は player スプライトの中にある2番と3番のコスチュームを使います。

自機の中の2番と3番のコスチュームを使う

2番と3番のコスチュームを交互に表示して、爆発しているように見せます。
コスチューム名は、爆発1と爆発2です。

 

 

自機とビームの当たり判定をしよう

敵のビームが当たったかを調べ、当たったら爆発するようにします。
ただ今回は、爆発すなわちゲームオーバーなので、そのことも考えて作ります。

まずGameOverという新しいメッセージを作ります。

GameOver というメッセージを作る

 

自機 player のプログラムを変更します。

自機が敵ビームに当たったとき、爆発するようにします。

敵ビームにやられたときの爆発を演出する

追加 ① では、コスチューム1(砲台の絵) にしています。
再実行した時に爆発の絵から切り替えるためです。

追加 ② では、敵ビーム beamE と当たったか判定しています。
当たっていればGameOverメッセージを送り、その後でスクリプトを停止します。

追加 ③では、GameOverメッセージを受け取ったときの処理になります。
爆発のコスチュームを交互に表示させて爆発しているように見せています。

 

 

敵の進攻を止めよう

自機がやられたら、敵の進攻を停止するようにします。
正確にはGameOverメッセージを受け取ったときの処理です。

敵 Gobo に次のコードを追加します。

敵Goboのプログラムを止める

GameOverを受け取ったら、Goboの動きをすべて止めます。

 

 

ビームを撃てないようにしよう

今は自機が爆発していてもビームが撃てます。
自機が移動(操作)できないときは、撃てないようにします。

状況を見るための自機の移動変数を作ります。

自機を操作できる状態か調べるための変数を作る

移動(操作)できるとき自機の移動を1、できないときを0として使います。

 

自機のコードを変更します。

操作できるとき自機の移動を1にする

ゲームオーバーになったら自機の移動変数を0にしています。

GameOverメッセージを送るタイミングではなく、
受け取ったときに自機の移動を0にする理由は後で分かります。

 

beam のコードを編集します。
自機の移動が0ならば、ビームを撃てないようにします。

自機の移動が0のときビームを撃てないようにする

 

 

ゲームオーバーを表示しよう

自機がやられた後にゲームオーバーの文字を表示します。

まず、GAME OVER を表示する絵を用意します。
リミックスした人は Sprite1 を使います。

ゲームオーバー表示用のスプライトを用意する

文字の後ろを黒く塗りつぶしておくことで、どんな状況でも文字がはっきりと見えます。
文字だけを表示すると Gobo と重なったりするので、見え難くなる場合があります。

 

コードを次のようにします。

ゲームオーバー表示のプログラム

通常は隠したままで、GameOverメッセージを受け取ったら表示します。
表示するまでの時間は適当です。好みで調整して下さい。

 

実行してみましょう。

画面が表示されないときはここをクリック

 

 

侵略されたらゲームオーバーにしよう

自機がビームでやられる他にゲームオーバーになる時があります。
それは、敵が自機と同じ位置まで侵攻してきた場合です。
同じ位置にいるということは、もう攻撃できないですよね。

Gobo の侵攻を受け取ったときの処理に追加します。

敵が自機と同じ位置へ来たらゲームオーバー

敵が降りたときにy座標をチェックします。
-130 あたりが自機と同じ位置になります。

 

敵が自機と同じ位置まで来たらゲームオーバーになるか、実行して確認してみましょう。

敵が自機と同じ位置へ来たらゲームオーバー

 

ところで、このページの「ビームを撃てないようにしよう」にて自機の移動を0にするタイミングがGameOverを受け取ったときにしたことを覚えてますか?
その理由が侵略によるゲームオーバーがあるから、だった訳です。

この侵略ゲームオーバーでは、もう一つ対応が必要です。
自機の移動を止めることです。

ゲームオーバーになったら自機の操作を止める

これでゲームオーバー後は、移動もビームの発射もできなくなります。

 

次回に続きます。