5/12Scratch2024年5月12日i-learnプログラミング初心者の子供に何を教えたらいいの?とお悩みの保護者のためのScratch(スクラッチ)の入門講座。Scratchで猫の動かし方はわかったけど・・・次にどんなことをしたらいいの?という疑問にお答えするシリーズです。Scratchといえば、ゲーム作り。ゲームと言われてすぐに思いつくものの中にシューティングゲーム(STG)は必ず入ってくるのではないでしょうか。今回はちょっとレベルアップしてSTGで使う弾幕にフォーカスしてみたいと思います。シューティングゲームって何?レーザーや玉などの飛び道具で敵を破壊するゲームです。ものすごく古いものではインベーダーゲームなどがシューティングゲームになります。画面は縦スクロールか横スクロールどちらかに自動的にスクロールしていくものが一般的です。シューティングゲームの初期には、敵機を破壊するものが主流でした。1990年代後半には敵機が弾幕と呼ばれる大量の弾を発射し、弾幕を避けることを主体とするゲームへの発展していきました。弾幕って何?弾幕とは、シューティングゲームにおいて同時に大量に発射される弾のことです。弾の連なる様子を幕に例えて弾幕と言います。弾幕系シューティングゲームで有名なものとして「東方Project」という作品群があります。上でも述べたようにScratchではたくさんの弾幕作品が公開されています。シューティングゲームの素材としての弾幕だけではなく、弾幕単体だけをつくってアート作品のようにしているものもありますのでぜひ他の人の作品も参考にしてみてくださいね。以下に弾幕の代表的なスタジオのリンクを掲載しておきます。シンプルな弾幕を作ってみようまず最初にシンプルな弾幕を作ってみたいと思います。横スクロールのシューティングゲームにおいて、前方向に放射状に弾が発射されるイメージです。スプライトと変数の準備まず、スプライトを準備しましょう。敵のスプライトはScratch内にある素材を使い、弾のスプライトは自分で描きました。敵のスプライトの場所と大きさを設定するプログラムを最初に作っておきます。「弾」のスプライトを選択した状態で、「このスプライトのみ」を選択して変数を作ります。変数名は「弾の角度」です。「このスプライトのみ」にするかというと、クローンごとに変数を使い分けたいからです。弾を発射させようまずは、敵キャラをx座標-170、y座標0に固定した状態で弾を発射させてみましょう。弾はクローンごとに30度づつ角度を変えて発射されるようにします。角度を維持して弾を飛ばす方法については以下の記事で解説していますので、そちらも参考にしてみてください。<Scratchで学ぶ三角関数>弾のプログラムは以下のようになります。「弾の角度」をクローンする前に30度づつ変えています。そのため、クローンごとに変数の値には違う値が格納されています。60そうすると、クローンごとに異なる変数値を持たせてプログラムを動かすことが可能になります。難しくしよう実際のシューティングゲームでは敵キャラが動いています。敵キャラを動かしてみましょう。敵キャラの動きをつぎのようにしてみました。▼敵キャラのプログラムこうすると、敵キャラが上下にランダムに動くようになります。弾も一発限りではなく、間を開けてずっと発射しづづけるようにしたいですね。先ほどのプログラムに「ずっと」と「1秒待つ」ブロックを追加してみました。▼弾のプログラム変更したプログラムを実行してみましょう。1秒ごとに敵キャラから弾が発射されるようになりました。作品のリンクはこちらになります。弾幕の角度や個数を変えて遊んでみてください。円形の弾幕を作ろう先ほどのシンプルな弾幕を応用して複雑な弾幕を作ってみましょう。うずまき状に弾幕を発射させてみたいと思います。敵キャラと弾のスプライトを用意します。敵キャラの位置は画面中央にします。弾のプログラムはこちらです。シンプルな弾幕とほとんど同じです。弾の個数(クローンの個数)とスピードだけ変えています。この状態でプログラムを動かすと、円形に弾幕が生成されます。うずまき状の弾幕を作ろう上で作った円形の弾幕をさらに応用してうずまき状の弾幕を作ります。考え方は「発射の角度を少しずらして連続発射」するだけです。角度をずらすために新しい変数「角度の変化」を作っておきます。弾幕を1周分打ち終わったら、10度ずらして再度ぐるりと1周弾幕を発射するプログラムを作りました。すると・・・角度をずらしながら発射されるので、弾幕がうずまき状に見えます。うずまき状の弾幕の作品はこちらです。まとめ今回は、シューティングゲームの弾幕を作ってみました。これに味方のスプライト(自機)などを追加すれば、シューティングゲームが出来上がります。弾幕を避けるゲームや、敵キャラを撃ち落とすゲームなどに使ってみてください。弾幕づくりのポイントは、「発射するときの角度」をクローンごとに変数を持たせておくということです。あとは、発射の角度とタイミングで弾幕の形は調整できますのでいろいろためしてみてくださいね。これは、「このスプライトのみ」の変数を使うことで実現できます。クローンごとの変数については、以下の記事でも紹介していますのでこちらの記事も参考にしてみてくださいね。割り算は2種類あるって知っていますか?ー算数嫌いの子のための算数プログラミング初心者のためのScratch(スクラッチ)入門-四捨五入テクニックこのサイトについて。今、注目されている考えさせる教育、アクティブラーニング。AI時代に教えるべき教育とは何か。2020年に教育必修化するプログラミング教育を交えながら、これからの教育シーンに必要な情報をお届けします。