この記事のポイント
シューティングゲームの敵の動かし方・倒し方がわかります。
はじめに シューティングの敵キャラをつくろう
シューティングゲームと言えばせまりくる敵キャラですね。この敵キャラに上手く弾を当てていき倒していくことが醍醐味です。
今回はこの敵キャラを動かして、弾を当てて倒す方法を説明していきます。
参考記事
前回の記事
前回はボタンを押すことでろぼてくから弾を発射するようにプログラムしました。今回の記事は前回の記事のプログラムの続きとして説明します。
シューティングゲームを作ろうシリーズ 第1回
シューティングゲームを作ろうシリーズを最初から始めたい方は以下記事を参照してください。
スクラッチの始め方
スクラッチをイチから始めたい方は以下の記事を参照してください。
完成作品
完成作品はこのようになります。
敵はろぼてくから発射される弾で倒すことができます。
完成プログラム
新規スプライト
<敵:Gobo>
敵キャラクターとして、スクラッチに元々ある「Gobo」を追加します。
修正スプライト
<弾>
弾がGoboに当たったら消えるようにします。
作るモノ(仕様)を考える
今回作るモノとその動きをプログラミングを始める前にザクっと考えます。
- 敵(Gobo)が画面右端から現れる。
- 現れる頻度はランダムにする。
- 現れる場所はランダムにする。
- 画面左に向かって進む。
- 画面左端に当たると消える。
- 弾に当たると消える。
- 弾は敵に当たると消える。
事前準備
敵キャラとして、「Gobo」を追加します。
Goboは画面右から左に移動するするようにしたいので、向きを反転させます。スプライトのコスチューム編集画面でスプライトの左右反転を行うことができます。コスチューム3つとも左右反転を行っておきます。
敵キャラをオリジナルで作るのも楽しいですよ。
プログラミング
敵キャラをランダムなタイミングで出現させる
敵キャラをランダムに画面右端から出現させるようにします。プログラムとしては以下のように考えます。
- ランダム時間待って、
- クローンを作る。
乱数の数字を変えると、敵キャラの出現頻度を変えることができます。数字を小さくすると高頻度で敵が出現するようになります。
敵キャラをランダムな位置で出現させる
次はクローンで作られた敵キャラをランダムな位置で出現するようにプログラムします。こちらも乱数を使います。プログラムとしては次のように考えます。
- クローンが作られたとき、
- 最初は隠して、
- 敵キャラのx座標は固定で、y座標の値をランダムな数字を入れて、
- 表示させる。
y座標の下の方(-150より下)はボタン操作エリアなので、そこに敵キャラが出現しないようにします。
敵キャラが左に向かって進む・画面左端に到達すると消える
先ほどのプログラムにこのように追加します。
敵キャラが弾に当たったら消える
敵キャラが弾に触れたら消えるようにプログラムします。以下のようにプログラムを追加してください。
この段階で次にプログラムする「弾が敵キャラに当たったら消える」を実現するために「弾削除」メッセージを送るブロックを追加しておきます。
この段階で一旦動きを確認してみましょう。
弾が当たると敵キャラが消えるようになっています。しかし、弾の方は消えないで貫通している状態です。次はこの弾の方を敵キャラに当たった場合に消えるようにします。
弾が敵キャラに当たったら消えるようにする
弾が敵キャラに当たったら消えるように、弾のプログラムを修正していきます。
先ほど送った「弾削除」のメッセージを受け取ったら、弾のクローンが削除されるようにします。弾のプログラムに以下を追加してください。
敵キャラを倒したときに効果音を出す。
最後に敵キャラを倒したときに効果音を出すようにします。
効果音は「Crunch」を使用します。以下のように「Crunchの音を鳴らす」を追加します。
これでプログラミングは終了です。お疲れ様です!
動作確認
動作確認をします。敵キャラに弾が当たると、敵キャラと弾の両方がちゃんと消えることが確認できると思います。
応用ポイント
敵キャラの出現頻度
敵キャラの出現頻度を変更することができます。敵キャラ:Goboのクローンを作るまでに待つ時間を変更することで実現できます。待つ時間を短くすることで敵キャラがドンドン出現するようになります。
敵キャラのスピード変更
敵キャラのx座標の移動量を変更することでスピードを変更することができます。この値を負の値で大きくすることで移動スピードが速くなります。
移動量を乱数にして、不規則な動きにするのも面白いですね!
さいごに
今回は敵キャラを出現させて、ろぼてくに襲い掛からせて、弾で倒せるようにプログラミングをしました。これでかなりシューティングゲームっぽさが増してきました。
次回
次回はライフポイントとスコアを追加して、ゲームクリア・ゲームオーバー条件を追加します。ぜひチャレンジしてみてください。
コメント