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

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

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

子どもでもわかるSCRATCH入門

22.インベーダーゲームを作ろう その4

[ 21.インベーダーゲームを作ろう その3 ] の続きです。
敵が自機に向かって進攻するようにしました。
続いて、自機からビームを撃てるようにしましたが、当たり判定は入ってません。

 

1. ビームとの当たり判定を敵に入れよう

自機より発射されたビームが、敵を爆発させるように当たり判定を入れます。

まず、絵が必要ですね。
敵がビームと当たったとき爆発する絵を、コスチュームの1つとして用意します。

scratch 敵の中に爆発の絵も入れる

リミックスした人は、Gobo スプライトの3番目のコスチュームを使います。

 

Gobo のスクリプトを編集します。
クローンされたときの処理の下に当たり判定を追加します。

敵を爆発させる仕組みを入れる

表示された後、ずっと beam (自機の発射したビーム) に触れたかチェックします。
もし beam と当たっていれば
爆発のメッセージを送り、コスチュームを爆発に変更します。
爆発メッセージを送る理由は後ほど説明します

 

実行すると次のようになります。

ビーム発射の絵

自機が発射したビームが次々と敵を爆発させていきます。
これはこれで爽快感がありますね。

 

ちなみに、当たり判定をビームではなく敵に入れた理由
ビームに当たり判定を入れると、どの敵に当たったかを調べる必要が出てくるからです。

調べるのが面倒なので、敵に当たり判定を入れて
ぼくはビームに当たったので爆発します
と自分で処理してもらう訳です。

 

 

2. 1発のビームで1個の敵を撃破

現状ではビームが敵を貫通してしまい、複数の敵を撃破してしまいます。
ここはやはり1発につき1撃破にします。

beam のスクリプトを編集します。

敵と接触したらビームは消える方向で

追加したスクリプトは
爆発を受け取ったとき隠すスプライトの他のスクリプトを止めるの3つです。
これでビームを停止します。

敵の当たり判定の中で、爆発メッセージを送っていたことを思い出して下さい
beam に触れたとき送っていたメッセージのことです。
このメッセージ交換で、敵の爆発と同じタイミングでビームを停止させます。

xxxを止めるという処理には次のように3つの選択肢があります。

すべて ステージ上で動いている全てのスクリプトを止める
このスクリプト このスクリプトのみ止める
スプライトの他のスクリプト このスクリプトが書かれているスプライトのみ止める

今回、スプライトの他のスクリプトを使いました。
これで beam に書かれているすべてのスクリプトが停止します。

 

実行してみましょう。

画面が表示されない場合はここをクリック

これで1発のビームで1個の敵をやっつける仕組みになりました。

 

 

3. 敵ビームを用意しよう

敵が発射する敵ビームを用意します。

リミックスした人は beamE のスプライトを使います。

左右反転させた絵を使って、動きを付ける

コスチュームは2枚用意して、これを切り替え表示することで
インベーダーゲーム風のビームを作ります。
2枚目のコスチュームは、1枚目の絵を左右反転させるだけでOKです。

コスチュームの名前は、beam1 と beam2 にします。

 

 

4. 敵と敵ビームの関係について

自機がビームを発射する時、自機のxとy座標を取得して表示する位置を決めました

これは敵のビームも同じで、発射する敵の座標が必要です。
しかし、自機と違って敵は複数存在するため、自機と同じ手法を取ることができません。

そこで敵がビームを発射する時に、どこの位置で発射するのか
座標パラメータを渡す仕組みを作る必要があります。

ちなみに、パラメータとは受け渡しデータのことです。

パラメータ変数を作って座標を渡す

この仕組みで注目する点は、パラメータ使用中の確認です。

敵は複数いるため、敵ビームが同時に複数クローンされる可能性があります。
パラメータ変数は一組しかないため、同時にいくつも処理できません。

そこでパラメータ変数が使用中なら何もしないといった仕組みを入れます。

 

 

5. パラメータ変数を作ろう

3つの変数を作ります。

パラメータ変数を作る

3つともすべてのスプライト用で作成します。

paraX、paraY が座標、paraF が使用中か確認するための変数です。

 

 

6. 敵ビームを発射させよう

敵ビームを発射させるためのスクリプトを作ります。

まず、ビームを発射する側 Gobo のスクリプトを編集します。

使用中フラグは一番初めに設定する

移動処理に発射処理を追加します。

paraF が0なら (未使用なら) すぐ1を設定して使用中にします。
その後で、座標を設定しクローンを作ります。

 

敵ビーム beamE のスクリプトを作ります。

敵ビームの移動処理

絵を自作した場合は、大きさを適当に調整して下さい。

クローンされた後、パラメータから座標を取得し
未使用の状態に戻します。

コスチューム#には現在のコスチューム番号が入ってます。
1番目なら2番目に設定し、2番目の時は1番目を設定します。

 

実行してみましょう。

画面が表示されない場合はここをクリック

敵からビームが発射されるようになれば成功です。

 

次回に続きます。