• シューティングゲームの作り方│レモン軍による宇宙の支配を防げ!①

シューティングゲームの作り方│レモン軍による宇宙の支配を防げ!①を作成した著者 グリフパッチ

この動画の和訳解説は、グリフパッチさんご本人から許可をいただいて掲載しております。
グリフパッチさんのYOUTUBEチャンネルはこちらからどうぞ。

スタータープロジェクト

なし

完成サンプル
サンプル
難易度

挑戦レベル

チャプター数
全8章

「シューティングゲームの作り方│レモン軍による宇宙の支配を防げ!① 」の解説

グリフパッチ(動画)
さいじゃく(字幕翻訳)
スクラッチを使って、画面遷移のないシンプルなのにワクワク(とレモン)が止まらないシューティングゲームの作り方が分かります。

レモンが宇宙にはびこっている……それだけでワクワクするゲーム設定!そのレモンたちを華麗に避けて撃墜しまくるシューティングゲームの開幕です!

この動画で学べること

上下左右の移動処理

プレイヤーが上下左右に動く方法を、カスタムブロックを使って実装してくれます。シューティングに限らず、青鬼とかスプラトゥーンとか迷路など、プレイヤーが上下左右に動くゲームであれば応用できる洗練された実装方法です。

角が丸いコスチュームのバグ

スクラッチでまだ直ってない角がギザギザになるバグ対策を教えてくれます。

上手なクローンの作り方

クローンは誰もが失敗を経験するブロックの1つですよね。僕も痛い目にあったことあります。グリフパッチさんが優れたクローン制御術を教えてくれるので、チェックしてください。

速度制限の方法

プレイヤーやレーザーが速く動きすぎると、ゲームバランスが崩れてしまいます。ちょうどよい難易度にするために変数を使った管理術を教えてくれるので、別ゲームにも応用しちゃいましょう!

スクラッチでシューティングゲームを作る

反レモン軍の諸君!
こちらグリフパッチ!!

今日はシューティングゲームの作り方を見ていこう!

敵はレモンだ!

レモンが宇宙の支配を狙っているぞ

タックルしてくるレモンを避けつつー

レーザーで奴らを撃ち落とせ!

一番のポイントは不規則に動き回る敵勢とー

戦場を縦横無尽に駆けまわるプレーヤーだ

敵の爆発シーンと揺れる画面も必要だな

今日やることは次の3つだ
プレイヤーデザイン 移動 あとマウスとレーザーの連動だ

にしても今日は何回レモンって言うだろうな!!

スプライト「Player《プレイヤー》」を作る

それじゃ やっていこう!

まずはプレーヤー戦闘機だ

ネコちゃんは さらば!

スプライトを新規作成しよう

機体は忘れずに右向きだぞ 

まずは長方形からだ

Shiftを押しながら作ると完璧な四角ができるぞ

変形ツールにして 角を選んでゴミ箱をクリックしよう

再び選択ツールにして45度回転させよう

Shiftを押すのを忘れるな!

次はサイズ調整だ

Altを押しながら三角を下にドラッグすると―

中心点を動かさずに形が変えられるぞ

よし 動かして真ん中の点に合わせよう

これで機体が自然に回転して見えるぞ

さらにShiftキーを押しながら 少し右にズラして微調整

Shiftキーを忘れると上下にズレちゃうぞ

ここで裏技!

Altを押して左クリックしながら動かすとー

ほら 完璧な分身が出来たぞ!

Shiftを押しながら形を整えて―

機体っぽくなるように並べるぞ

こいつはレモン色にしておこう

いい感じだぞ

枠線は細くしておくか

おっと 名前がなかった

Playerでいっか

お次はステージを選択してビットマップにしよう

「Player」の移動処理

画面全体を濃いめの黒にしよう

じゃあ機体に戻ってコーディングだ

今回はプレイヤーの動きとレーザーだ

緑の旗をクリックしたら―

最前面にして中央からスタートさせよう

機体を滑らかに動かすカギはスピードだから―

スピードの変数を2つ作るぞ

speed xとspeed yだ

それぞれ「このスプライトのみ」にチェック

両方とも0で初期化しよう

最初に変数をリセットするクセをつけておこう

じゃあ繰り返し処理を作っていくぞ

まず左右の移動からだ

色々な作り方があるけど 今回はカスタムブロックを使おう

名前は「move x」で引数は「joystick x」だ

カスタムブロックのいいところは でかいコードを小分けにして―

さらに名前をつけて管理できるとこだな

あとで作品を手直しするときにガチで役立つぞ

「move x」を組み込もう

ちょっとしたテクニックを使うぞ

「○キーが押されたら」の引き算ってテクだ

今回はDキーで右 Aキーで左に動かすわけだけど――

Dが押されたら1-0になって
Aが押されたら0-1になるぞ

ー1が左 0が停止 1が右
になったぞ!

じゃこの値を「joystick x」として使おう

左がマイナス1で
右がプラス1だぞ

引数に0.9を掛けて変数「speed x」に追加だ

この0.9は加速する度合いだぞ

変数を作って管理したければ それでもOK

この下で 今度は「speed x」自体に0.9をかけるぞ

今回の0.9は減速する度合いだ

最後にX座標に「speed x」をセットすれば横移動の完成!

試してみよう

DキーかAキーを押してみて

いいね!

同じことを縦移動でもやっていくぞ

カスタムブロック「move y」を作って引数に「joystick y」っと

横移動のカスタムブロックと同じだな!

引数に0.9をかけた値を「speed y」に追加してっと

で「speed y」自体にも減速の0.9を掛けて――

仕上げにY座標に「speed y」をセットして完成!

ループに「move y」を入れて「○キーが押されたら」の引き算をコピー

WキーとSキーに変えよう

上下左右に動くかテストだ!

よしよし

あとは機体の向きをマウスに合わせよう!

今回は速さが決め手だから 回転速度は0.9掛けるとか無し

だから超カンタン

「マウスのポインターへ向ける」ブロックを置くだけ!

スプライト「Laser《レーザー》」を作る

いいね 超満足

じゃ いよいよ対レモン用レーザーの発射だ!!

「Laser」ってスプライトを作ろう

ズームしといてくれ

長めの長方形を作るぞ

キャンバス中央にするのを忘れるなよ

中の色は そうだな…白かな

枠線を黄色にしよう

次は変形ツールで角を丸くしていこう

こんなふうに角の近くをクリックしよう

次に角を選択してDeleteを押すぞ

左側も同じように角を丸めよう

あと枠線のサイズを2にしよう

ついでにバグ対策で透明な長方形で囲っといてくれ

これなくても動くけど 角がギザギザになるんだよね…

まぁそのうち直るバグだろうけどな

「Laser」のコーディングを実装する

それじゃあコーディングやってくぞ!

まず初期化だ

緑の旗が押されたら クローンされるまで隠そう

本体は使わないから ずっと非表示のままだ

スクラッチじゃよくある話だね

むしろ無理して使うとバグるよ

「このクローンを削除する」じゃ本体は消えないから――

ずっと消えないレーザーが1本だけある…なんてことに(笑)

ってことで素直に本体は隠そう

レーザーの処理は全部「クローンされたとき」に入れてこう

シンプルなゲームには効果的な技だぞ

クローンされたら「Player」と同じ座標にしてっと

ここから真っ直ぐ飛んでいってほしいわけだ

そこで「○度に向ける」ブロックを使うぞ

「○へ向ける」ブロックじゃないからな?

確かにさっきは向きを変えるのに使ったけど…ケース・バイ・ケースってやつだ

ってことで調べるブロックの「○の○」を当てはめるぞ

中身を「Player」の「向き」に変えておこう

よし

じゃあ「表示する」も置いてっと

「○まで繰り返す」ブロックに取り掛かろう

画面の端に触れるまで繰り返すぞ

ループの中に「○歩動かす」を置いて――

値は11にしようか

値が大きいほど速く動くぞ

とりあえず11で!

ループを抜けたら「このクローンを消す」ブロックを置こう

レーザーの発射処理を作る

良さそう…かな!

あとはスペースキーが押されたら発射だな!

ここは「自分のクローンを作る」でOK…だと思う?

そうは問屋が卸さないんだよね〜

やってみるよ

スペース押すとレーザー出るね うん

パッと見では良さそうだな…

でもね

特別なアドオン入れてるからクローンの数が分かるんだけど…

ほらほら!

なんで300以上もクローンしちゃってんだ!

レーザーめっちゃ少ないよな!?

分かる人いる?

OK 説明しよう!

これスクラッチあるあるってやつな

コードを見てくれ

ここな

スペース押したらクローン作ってるよね

これが良くない

これだと一度に何個クローンができるか分かる?

最初は本体だけだよね

スペースを押したことが本体に伝わると――

クローンができる

さらにスペースを押すと――

本体とクローンの両方に伝わってしまう

すると 両方からクローンができる

しかも出現する座標は同じだから――

重なって1つに見えるのが厄介だ

スペース2回で4つもクローンができちゃったね

これ続けるとヤバいよな

3回目で4×2=8個

次は16個…32個

64個……256個

アッという間に限界まで増えるぞ

さいあくだ!

レモン倒すどころじゃないぞ

諸悪の根源は レーザー自身にクローンを作らせたこと

クローンもスペースキーを感知するって覚えといて

じゃ 「Player」に処理を移そう

これはもういらないっと

「Player」から「Laser」を制御する

「Player」を開こう

カスタムブロック「Shoot」を作ろう

これを回転処理の直後に置こう

ここな

あんまりキーを叩かせるのもなんだから「○キーが押されたら」は使わない

代わりに長押しで発射できるようにするぞ

スペースキーか マウスがクリックされてる間はずっと――

「Laser」のクローンを作るようにしようか

よし テストしてみよう

緑の旗を叩け!

おーキタキタキタぁ!

最強すぎるな!

こりゃ無双しすぎてヌルゲーだから――

ちょっと制限するか…

変数「fire rate」を作ろう

「もし○なら、でなければ」ブロックを置いてっと

「fire rate」がゼロのときだけ発射させたいから――

「でなければ」の方に発射処理を移そう

「fire rate」の値を調整して発射タイミングをコントロールしよう

じや 「fire rate」がゼロより大きいときはマイナス1して――

発射したら…そうだな…10にするか

これで「fire rate」がゼロになるまで発射が制限されるかテストだ

おっとぉ ちょっとノロいな

1秒に3発ってとこか

ゲーム序盤はこれでも平気だけど――

どんどんレモン増えまくる予定だからなぁ

試しに10じゃなくて1にしようか

いいね

ちょっと速いか?

まいっか

弾幕でピンチを切り抜けられるかもしれないし

次回予告

よし おつかれぃ!

コスチュームとか使いたかったらリンク貼っとくからどうぞ

戦闘機を作るのは手間かけても楽しそうだよな

音も工夫したり楽しんで!

次回はいよいよレモンどものお出ましだ…

うじゃうじゃとな!

ワクワクしてきた!

じゃあチャンネル登録と高評価よろしくね

チャンネルメンバーも大歓迎だ!

色んな特典を考えてるから みんなでチャンネルを盛り上げていこう!

それじゃまた!

スクラッチオン!