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

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

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

子どもでもわかる Scratch 入門

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

 

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

敵が自機に向かって侵攻するようにしました。
そのあと、自機からビームを撃てるようにしました。

 

 

ビームの当たり判定を入れよう

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

まず、爆発の絵が必要ですね。
敵である Gobo を選択します。

Goboのスプライトを選択する

 

3番目にあるコスチュームを使います。
こうしておけば座標の取得などせず、コスチュームの切り替えだけで済みます。

Goboのコスチュームに爆発の絵を入れる

 

ここで新しいメッセージ爆発を作ります。

爆発という新しいメッセージを作る

 

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

クローンされたときの処理に当たり判定を入れる

 

当たり判定は調べるカテゴリのマウスポインターに触れたを使います。
対象を beam に変更しましょう。

当たり判定を作る

ずっとを使って beam との当たり判定を繰り返します。

beam に触れたあとは爆発のメッセージを送り、コスチュームを爆発に変更します。
爆発メッセージを送る理由はあとで説明します

0.5秒待つは爆発の絵を表示している時間です。
最後に使い終わったクローンは削除します。

 

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

ビームによって敵が次々と爆発する

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

 

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

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

 

 

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

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

ビームのスプライトを選択します。

ビームのスプライトを選ぶ

 

先ほど作った爆発のメッセージをここで使います。

爆発を受け取ったときの処理を追加しましょう。

ビームのプログラムを追加する

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

 

xxxを止めるという処理には3つのパターンがあります。

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

 

今回、スプライトの他のスクリプトを止めるを使いました。
動作を見てみると、移動処理を止めたことになります。

ビームの移動処理を止めた

 

実行してみましょう。

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

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

 

 

敵ビームを用意しよう

敵が発射する敵ビームを用意します。
リミックスした人は beamE のスプライトを使います。

敵ビームのスプライト

 

ビームのコスチュームは2枚用意します。
これを切り替え表示することでインベーダーゲーム風のビームになります。

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

2枚目のコスチュームは、1枚目の絵を左右反転させるだけでOKです。
コスチュームの名前は、beam1 と beam2 にします。

 

 

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

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

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

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

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

 

敵とビームの関係を図にしてみました。

敵とビームの関係。パラメータの受け渡し

この図の注目点はパラメータ使用中の確認です。

敵は複数いるため、ビームが同時に発射される可能性があります。
そこでパラメータの使用中を確認して、一度にひとつだけ発射可能にします。

つまりパラメータ変数が使用中なら何もしないといった仕組みにします。

 

 

パラメータ変数を作ろう

3つの変数を作ります。

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

パラメータの受け渡しに使う変数を3つ作る

paraFはパラメータが使用中かどうかを管理し
paraXparaYで座標の受け渡しに使います。

 

 

敵ビームを発射させよう

敵ビームを発射させるためのプログラムを作ります。

まず、ビームを発射する側 Gobo のコードを編集します。
移動処理に発射する仕組みを追加しましょう。

敵がビームを発射する仕組みを作る

乱数で発射するかどうかを決めます。
とりあえず発生率 3% とします。

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

 

敵ビーム beamE のコードを作ります。
Gobo よりクローンされたあとの処理です。

敵ビームの発生と移動処理

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

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

コスチュームは並び順に番号が付いています。
その番号を調べ、1ならbeam2に変更し、1以外ならbeam1にします。
つまり交互に切り替えます。

ステージ下部まで移動したらこのクローンを削除するでビームを消します。

 

実行してみましょう。

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

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

 

次回に続きます。