スクラッチで東方シューティングゲーム風弾幕の作り方①

ゲーム作りのテクニック

今回つくる弾幕

難易度2 out of 5 stars

今回から数回に渡っていろいろな種類の弾幕の作り方を解説していきます。第1回目は敵の中心から全方向に放射される弾幕です。弾幕の作り方をマスターして東方Projectのような最高に難しいシューティングゲーム作りに挑戦してみましょう

まずは仕上がりを見てみましょう。🏴を押してみてください。敵キャラのペンギンから渦巻き状に弾幕が発射されます。

youtube解説

こちらの動画でもわかりやすく弾幕の作り方をゼロから解説していますのであわせてチェックしてください。チャンネル登録もよろしくお願いします!

【テクニック】スクラッチで東方シューティングゲーム風弾幕の作り方①

はじめに

まず、ステージと敵キャラクターをセットしましょう。以下のように背景を宇宙(stars)にして敵キャラとしてペンギンを80%の大きさで配置しました。このあたりは好みなので好きなようにしてください。

スクラッチで東方シューティングゲーム風弾幕の作り方①

攻撃のスプライトを作る

では次に攻撃用のスプライトを作っていきます。以下のように、新しく”攻撃”というスプライトを作り、コスチュームに弾丸を描きます。弾丸はタテ2×ヨコ5くらいに作るようにしましょう。

スクラッチで東方シューティングゲーム風弾幕の作り方①

弾丸のコードを書く

基本のコード

では攻撃のスプライトに弾丸のコードを書いていきましょう。まずは以下の通りにコードを書いてみましょう。

スクラッチで東方シューティングゲーム風弾幕の作り方①

発射の向きの変数を作るときは”このスプライトのみ”にチェックを入れるようにしましょう。クローンひとつひとつに発射の向きを与えるためです。

スクラッチで東方シューティングゲーム風弾幕の作り方①

これで🏴を押してみましょう。以下のように弾が発射されると成功です。

放射状に発射する

このコードだと、弾が渦巻き状に発射されます。これはこれで動きとして悪くはありませんが、花火のように一気に弾けるような弾幕も作ってみましょう。実はほんのちょっと変更するだけで渦巻きから花火に変えることができます。

発射のブロック定義を開けると(右クリック編集)、左下に”画面を再描画せずに実行する”というチェックボックスがあります。ここにチェックを入れるだけで、花火のように一気に発射されるのです。

スクラッチで東方シューティングゲーム風弾幕の作り方①
スクラッチで東方シューティングゲーム風弾幕の作り方①

チェックを入れていないと、一から計算するので処理が遅くなって、弾が順番に作られるために渦巻きになるのです。

では🏴を押してみてください。花火のように弾が発射されれば成功です。

弾を曲げる

では、次に弾を曲げましょう。弾を曲げることで風車のような弾幕を出すことができます。以下のようにコードを追加します。これだけで弾が曲がっていきます。

スクラッチで東方シューティングゲーム風弾幕の作り方①

では実際に見ていきましょう。以下のようになれば成功です。

コードを汎用的にする

これで弾幕ができるようになりましたが、いろいろなパターンの弾幕を出せるようにコードを整理していきたいと思います。以下のように変数を作ってコードを整理します。変数を作るときは”このスプライトのみ”にチェックを入れるのを忘れないようにしましょう。

スクラッチで東方シューティングゲーム風弾幕の作り方①
スクラッチで東方シューティングゲーム風弾幕の作り方①

弾の数が36個だとすると、1周360度なので、1つ1つの弾の間は10度になるということです。弾の数が6個だと60度になるということですね

弾の数や速度、曲がりをいろいろ変えて、好みの弾幕をつくってみましょう。

例えば、

弾の数:9
弾の速度:4
弾の曲がり:1
発射の間隔:0.3

とすると、以下のような弾幕になります。

また、例えば以下のように、弾の曲がりを乱数にするとどうなるでしょう。

スクラッチで東方シューティングゲーム風弾幕の作り方①

以下の動画のように1つ1つの弾がバラバラの動きをするので、難易度の高い弾幕になります。

定義に引数を追加する

さらにいろいろな弾幕を作るのを楽にするために、定義に引数を加えていきます。
定義を以下のように変更します。

スクラッチで東方シューティングゲーム風弾幕の作り方①

そして、コードを以下のように変更します。

これで定義の丸の中に数字を入れるだけで好きな弾幕が作れるようになります。

スクラッチで東方シューティングゲーム風弾幕の作り方①

すべてのコード

すべてのコードはこちらから確認できます。

東方シューティングゲーム風弾幕