はじめに
今回は、Scratchで作成した、スクロール型シューティングゲームの詳しい仕組みなどについて解説して行きます。
実際の作品
操作方法
- 矢印キーで移動
- マウスクリックでマウスの方向にりんごを飛ばす
それでは早速、詳しい仕組みの解説をして行きます。
この作品のスゴイところ
- クローンを使わずに、スタンプで敵を描画しているので、大量に敵を作れる!
- 敵も背景と一緒に動く
- 基本的な機能は実装しているので、応用がたくさん
プログラムの全体的な流れ
- 変数などを初期化する
- メインループを動かす
- 敵の描画をする
- 敵の作成をする
全体的にはこのような流れになっています。それでは実際にプログラムを見て行きましょう。
初期化のプログラム
旗が押されたら、初期化→メインループの順番で実行して行きます。
初期化のプログラムはこんな感じで、
- 大きさを半分にする
- 敵の移動速度などの変数をセット
- 敵のX座標Y座標を管理しているリストを初期化
- 最初だけ10体モンスターを近くにランダムに追加する
- 敵の向きをセット
- 敵の種類をセット
なんだか難しそうなことをしているように見えますが、変数部分に限ってはただ初期化をしているだけなので難しくはありません。
下の10回繰り返すのプログラムでは、自分を中心として、敵が出現する範囲から敵の座標をランダムで出しています。
それでは、メインループの処理である、敵の描画に行きましょう。
敵の描画
なんだかスゴイでかいですが、大丈夫です。(スキルがないからでかくなってしまったのは内緒)
初期化
敵が画面内にいるか判定
このブロックすんごい長いので難しそうに見えるのですが、やっていることは本当に簡単なので安心してください。やっていることは、
- 上下左右で画面内に敵がいるか判定
たったこれだけのプログラムです。上、下、左、右で範囲内にいるか判定しているので、四つ判定用のブロックがあります。
もし画面外にいる敵だったら
もし画面外の敵だったら、その敵は描画する必要がないので、次の敵の情報にスキップします。ただカウンターを先に進めるだけです。
画面内だったら描画する
もし画面内だったら、描画します。描画されている敵の数を把握しておきたいので、1ずつ増やすようにしておきました。
Scratchでは画面外にスプライトを移動させることが出来ないので、コスチュームを大きいものに一瞬切り替えるという裏技?を使っています。
そして、座標をリストから持ってきて、三角関数を使ってXとYの移動量を計算しています。これのおかげで敵が自分の方向に向かってくることができます。
敵の種類というリストには、名前で分かる通り、敵の種類が入っています。これを変更すると、自作のキャラクターを簡単に追加することができます。
りんごに敵が触れたら
りんごに触れたら、その敵の情報が入っているリストのカウント番目を全て削除します。一応隠しています。
でなければ普通に表示してスタンプをして、次の敵の描画に進むためにカウンターを1増やしています。
敵の作成
これもたくさんあって難しそうですが、ランダムに敵を生成しています。ただ、敵の最大数より敵の数が少ない場合の時のみです。(敵の最大数を設定しておかないと、大量に生成されてしまう💦)
敵の最大数をランダムに変える
これは別にいらないのですが、一応解説して行きます。敵の最大数をランダムな間隔で増やしています。
まとめ
- 複雑そうなプログラムでも、分解してみると理解できることがある
- 三角関数は高校で習うので、まだ理解できなくて大丈夫
- まだこのプログラム全体が理解できなくても、楽しんで作品を作ってみよう
コメント