- スターター作品
- なし
- 今回の完成サンプル
- なし
さぁ、スクラッチでナニ作る!?
動画で見てみよう
[talk]チャンネル登録して応援よろしく!チャンネル登録する[/talk]チュートリアルの元になった作品
[prj-embed prj="1322091566" mini="1" title="プレイしておこう" prj-title="はじめてのスクラッチ #029" prj-author="ok-scratch"]今回の[prj-link prj="1322091566" title="はじめてのスクラッチ #029" author="ok-scratch"]スクラッチを作る参考作品[/prj-link]です。爆雷のY方向だけじゃなくてX方向にも乱数を入れてるのがヤバい。普通は真下に一直線で落とすとこだけど、縦横どっちにもランダム要素を仕込むことで毎回まったく違う軌道になって、避けるのが格段にキツくなるんだ。同じシューティングなのに弾のランダム軸を1つ増やすだけでゲームの難易度と緊張感がガラッと変わるのがキレッキレ。この仕掛けどう作ってるか、見ていこう。参考資料:スクラッチプログラミング事例大全集[/prj-embed]今回の目標
- 矢印キーで潜水艦を左右に動かせるようにする
- スペースキーで魚雷をクローンとして発射する
- 敵潜水艦がランダムに動いて爆雷を落とす仕組みを作る
- 魚雷が命中したら得点、爆雷に当たったらゲームオーバーにする
スターター作品をリミックスしよう
このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード
#1潜水艦の初期設定
[talk class="m-l-n"]これまでの回でいろんなテクニックを身につけてきたけど、今回はそれを活かして潜水艦シューティングを作るよ。まずプレイヤーの潜水艦をセットアップしていこう。[/talk]準備
スプライト「プレイヤー潜水艦」を開く
| スプライトについて |
|---|
| プレイヤーが操作する潜水艦。左右キーで移動し、スペースキーで魚雷を発射する |
| どんな役割か |
| 自分が操作できる潜水艦を作るよ!左右の矢印キーで動かして、スペースキーで魚雷を撃てるようにしよう。爆雷に当たったらゲームオーバーだから気をつけて! |
変数「■魚雷命中数」を追加
魚雷が敵潜水艦に命中した回数を記録するグローバル変数
実装
#2潜水艦の操作
[talk class="m-l-n"]潜水艦を矢印キーで左右に動かせるようにしよう。開始位置は画面下の真ん中、x座標0・y座標-130のあたりだね。[/talk]ずっとの中でキー入力をチェックし続ける仕組みだよ。右向き矢印キーならx座標を10ずつ増やして向きを90度に、左向き矢印キーなら-10ずつ減らして向きを-90度にする感じ。
さらに爆雷に触れたかの判定もここに仕込んでおくんだ。爆雷はまだ作ってないけど、先に条件だけ準備しておくよ。
#3ゲームオーバー処理
[talk class="m-l-n"]爆雷に当たったときの処理を追加するよ。前のステップで作った「爆雷に触れた」条件の中身を埋めていこう。[/talk]( ) と ( ) 秒言うで「沈没…」と1秒間表示したあと、 の「すべてを止める」でゲーム全体をストップ。これでゲームオーバーの流れが完成。
#4魚雷の準備
[talk class="m-l-n"]潜水艦の基本ができたから、次は魚雷のスプライトを準備するよ。[/talk]準備
スプライト「魚雷」を開く
| スプライトについて |
|---|
| プレイヤーが発射する魚雷。Submarineのクローンとして生成され、上に向かって移動し、EnemySubに当たると命中数をカウントアップする |
| どんな役割か |
| 魚雷のスプライトを作るよ!スペースを押すとSubmarineの位置からクローンが飛び出して、上に向かってビューンと進むんだ。敵に当たったら爆発するようにしよう! |
実装
隠すで本体を隠しておいて、大きさは20%に設定。テンプレートを隠してクローンだけ画面に表示するのが、シューティングの弾を作るときの定番パターンみたいなもの。
#5魚雷の初期位置
[talk class="m-l-n"]魚雷のクローンが生まれたときの初期動作を設定していこう。[/talk]クローンされたときでクローンが作られたら、まずプレイヤー潜水艦の位置に移動するよ。こうすると魚雷が潜水艦から発射されたように見えるんだ。回転方法は「自由に回転」にしておく。
#6魚雷の発射
[talk class="m-l-n"]魚雷の初期動作ができたから、潜水艦のスプライトに戻ってスペースキーで撃てるようにしよう。[/talk]準備
スプライト「プレイヤー潜水艦」を開く
実装
新しい
[talk]シューティングゲームの弾の連射間隔って、ゲームバランスのカギみたいなとこがあるよ。0.2秒だとほどよい連射感だけど、0.05秒にすると機関銃みたいにバリバリ撃てるし、1秒にしたら一発を丁寧に狙うゲーム性になる。プロの現場でもこの「発射レート」ってパラメータ1つで難易度がガラッと変わるんだ。[/talk]
#7魚雷の飛行と命中判定
[talk class="m-l-n"]潜水艦から発射できるようになったから、次は魚雷のスプライトに切り替えてクローンの動きと当たり判定を作っていくよ。[/talk]準備
スプライト「魚雷」を開く
実装
向きを-90度にセットして表示したら、ずっとの中でy座標を10ずつ増やして上に飛ばす。
#8当たり判定
[talk class="m-l-n"]敵潜水艦に触れたら「■魚雷命中数」を1つ加算してクローンを削除するんだ。端に到達したときもクローンを消す仕組み。[/talk]#9端で消す
[talk class="m-l-n"]当たっても外れても、クローンをちゃんと片付けるの地味に大事だよ。放置すると見えないクローンがどんどん溜まっていくから。[/talk]#10敵潜水艦の初期設定
[talk class="m-l-n"]魚雷ができたから、次は的になる敵潜水艦を作っていこう。[/talk]準備
スプライト「敵潜水艦」を開く
| スプライトについて |
|---|
| ランダムに動く敵の潜水艦。画面上部を左右に移動し、定期的に爆雷を落とす。魚雷に当たると点滅する |
| どんな役割か |
| 敵の潜水艦を作るよ!左右にランダムで動き回って、一定時間ごとに爆雷を落とすようにしよう。魚雷に当たるとピカッと光るようにするよ! |
実装
x座標を ( ) 、y座標を ( ) にするで初期位置をx座標-300・y座標100にして、画面の左上あたりからスタートさせるよ。大きさは50%で、回転方法はプレイヤーの潜水艦と同じ「左右のみ」の設定。
#11敵の移動と被弾演出
[talk class="m-l-n"]敵潜水艦にランダムな動きと、魚雷に当たったときのフラッシュ演出をつけるよ。[/talk]ずっとの中で( ) 歩動かすに0から15の乱数を入れて、移動速度がランダムに変わるようにするんだ。端に着いたら跳ね返る。速度が毎回違うから動きが読みにくくなるのがポイントだね。
魚雷に触れたら( ) の効果を ( ) にするで「明るさ」を100にして白く光らせて、0.05秒後にまた0に戻すんだ。これを3回繰り返してピカピカっと点滅する被弾エフェクトの完成。
[talk]被弾エフェクトってコスチュームを切り替えて作る方法もあるけど、この作品は「明るさ」効果の100と0を切り替えてフラッシュさせてるんだ。追加のコスチュームが一切いらないし、どんなスプライトにもそのまま使える汎用テクニック。ゲーム中に敵が光るあの演出がこんなシンプルに作れるの、けっこういいよね。[/talk]
#12爆雷の準備
[talk class="m-l-n"]敵潜水艦の動きができたところで、次は爆雷を用意するよ。[/talk]準備
スプライト「爆雷」を開く
| スプライトについて |
|---|
| 敵潜水艦が落とす爆雷。EnemySubのクローンとして生成され、ランダムに揺れながら下方向に落下する。Submarineに当たるとゲームオーバー |
| どんな役割か |
| 敵が落とす爆雷を作るよ!EnemySubの位置からランダムに揺れながら落ちてくるんだ。自分の潜水艦に当たったらゲームオーバーになるから、ちゃんと判定を作ろう! |
実装
魚雷のときと同じパターンで、隠すで本体を隠して大きさを30%に設定。クローンが実際に画面に登場するやつ。
#13爆雷の出現位置
[talk class="m-l-n"]敵潜水艦から爆雷を生成するとこまでできたから、爆雷のスプライトに戻ってクローンの初期動作を設定していくよ。[/talk]クローンされたときで、敵潜水艦の位置に移動してから表示する。魚雷のときと同じ要領で、クローンが敵潜水艦の場所から出てくるように見えるんだ。
#14爆雷の落下パターン
[talk class="m-l-n"]爆雷の落下動作を作って、ゲームを完成させよう。[/talk]ずっとの中でy座標を-15から-1の乱数で変えつつ、x座標も-10から10の乱数で変えるよ。普通なら真下に落とすだけだけど、縦と横の両方にランダム要素を入れることで毎回違う軌道になるのがこの作品の工夫。避けるのがかなり大変だよ。
端に触れたらこのクローンを削除するでクローンを消す。画面外に出た爆雷の片付けを忘れると、見えないところでクローンが溜まっていくから地味に大事みたいな。
#15爆雷の生成
[talk class="m-l-n"]爆雷の準備ができたから、次は敵潜水艦のスプライトに切り替えて爆雷をランダムなタイミングで落とす仕組みを作ろう。[/talk]準備
スプライト「敵潜水艦」を開く
実装
新しい
まとめ
4種類のスプライトを組み合わせて、本格的なシューティングゲームが完成したね!クローンで弾を連射する仕組みと、乱数で予測不能な動きを作るテクニック、どっちもいろんなゲームに使えるから覚えといて損なし。自分なりにアレンジして、オリジナルのシューティングにチャレンジしてみてね。