- スターター作品
- なし
- 今回の完成サンプル
- なし
さぁ、スクラッチでナニ作る!?
動画で見てみよう
[talk]チャンネル登録して応援よろしく!チャンネル登録する[/talk]チュートリアルの元になった作品
[prj-embed prj="1318183462" mini="1" title="プレイしておこう" prj-title="sb3_20260508174811" prj-author="ok-scratch"]今回の[prj-link prj="1318183462" title="sb3_20260508174811" author="ok-scratch"]スクラッチを作る参考作品[/prj-link]です。リンゴが1秒ごとにランダムな場所にワープするだけで、追いかける楽しさが生まれてるのがヤバい。「どこかの場所へ行く」たった1ブロックが、プレイヤーをステージ中ダッシュさせ続ける原動力になるってキレッキレの設計だ。制限時間と組み合わせることで、止まってる時間がないドタバタ感が生まれてるのもいいよね。この仕組みをどうやって組み立てるか、見ていこう。参考資料:スクラッチプログラミング事例大全集[/prj-embed]今回の目標
スターター作品をリミックスしよう
このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード
#1ネコの初期設定
[talk class="m-l-n"]スクラッチの基本はもうバッチリだよね。今回は矢印キーでネコを動かして、制限時間内にリンゴをたくさん食べるアクションゲームに挑戦しよう![/talk]準備
スプライト「ハングリーキャット」を開く
| スプライトについて |
|---|
| プレイヤーが矢印キーで操作するネコのキャラクター。リンゴに触れて食べ、スコアを稼ぐ。タイマーが0になるとゲームオーバーになる。 |
| どんな役割か |
| プレイヤーが操作するネコを作るよ!矢印キーで動かして、リンゴを食べたらスコアが上がる仕組みを実装しよう。 |
変数「★スコア」を追加
プレイヤーがリンゴを食べるたびに加算されるスコア
変数「★タイマー」を追加
ゲーム残り時間(秒)。0になるとゲームオーバー
実装
ずっとループの中で、まず「★タイマー」の値を毎フレーム計算しているんだ。タイマーは旗クリックからの経過秒数を自動で数えてくれるから、制限時間の2からその値を引いて切り下げれば、残り秒数がわかる仕組みだね。[talk]スクラッチのタイマーって、旗をクリックした瞬間から自動でカウントが始まるんだよ。だから「残り時間」を作りたいときは、制限時間から引き算するだけでカウントダウンができちゃう。タイマー用の変数を自分で減らしていく方法もあるけど、引き算パターンのほうがシンプルで、ループの回数に依存しないのが強みだね。[/talk]
#2タイマーチェック
準備
メッセージ「ゲームオーバー」を追加
タイマーが0になったときに送信されるメッセージ。受信したスプライトはゲーム終了処理を行う
実装
「★タイマー」が0になったかどうかチェックするよ。0になっていたら( ) を送って待つで「ゲームオーバー」メッセージを送って、全スプライトの終了処理が終わるまで待つんだ。
#3移動
続いて左右の移動処理。右向き矢印キーが押されたらx座標を10増やして右に、左向き矢印なら-10で左に動かすよ。どちらも移動のたびに次のコスチュームにするで次のコスチュームに切り替えるから、ネコが歩いてるように見えるわけだね。
コスチュームが2枚あれば交互に切り替えるだけでアニメーションになる。パラパラ漫画と同じ原理だよ。
上向き矢印キーでy座標を10増やして上に、下向き矢印なら-10で下に移動するよ。左右と同じく、動くたびにコスチュームを切り替えてアニメーションさせるんだ。
#4接触判定
[talk class="m-l-n"]ネコの左右移動が完成したから、続けて接触判定を追加しよう。[/talk]準備
メッセージ「食べた」を追加
ネコがリンゴに触れたときに送信されるメッセージ。スコア加算と効果音再生のトリガー
実装
そして( ) に触れたでリンゴに触れたかチェックして、触れていたら( ) を送るで「食べた」メッセージを送信する。このメッセージでネコとリンゴの両方が同時に反応できるのがポイントだね。
#5リンゴの初期設定
[talk class="m-l-n"]ネコの基本動作ができたから、次はターゲットのリンゴを準備していこう。[/talk]準備
スプライト「リンゴ」を開く
| スプライトについて |
|---|
| ランダムな位置に出現するリンゴのキャラクター。ネコに食べられると別の場所に移動する。 |
| どんな役割か |
| リンゴを作るよ!ランダムな場所にワープして、ネコに食べられたらまた別の場所に現れる動きを実装しよう。 |
実装
ネコとリンゴを離して置くことで、スタート直後から「追いかけるゲーム」だとわかる構成だよ。
#6リンゴのワープ移動
[talk class="m-l-n"]リンゴをランダムな場所にワープさせ続ける仕組みを作るよ。同じ場所にずっといたらカンタンすぎるもんね。[/talk]ずっとループの中で( ) へ行くの「どこかの場所」を使うと、リンゴがステージ上のランダムな位置に瞬間移動するんだ。1秒待ってからまたワープする繰り返しで、この1秒の間隔がプレイヤーにとっての勝負どころになっているよ。
#7食べられたらワープ
[talk class="m-l-n"]ネコの接触判定ができたから、次はリンゴ側で「食べた」を受け取ったときの処理を作っていくよ。[/talk]( ) を受け取ったときで「食べた」メッセージを受け取ったら、( ) へ行くの「どこかの場所」で別の位置にワープするんだ。食べられた瞬間に新しい場所へ飛ぶから、プレイヤーはすぐ次のリンゴを追いかけることになるわけだね。
#8スコアと効果音
[talk class="m-l-n"]リンゴ側の反応ができたから、ネコ側でも「食べた」メッセージの処理を作ろう。[/talk]準備
スプライト「ハングリーキャット」を開く
実装
( ) を受け取ったときで「食べた」を受け取ったら、「★スコア」を1増やして効果音を鳴らし、「モグモグ!」と1秒言うよ。スコア・音・セリフの3つが揃うことで、リンゴを食べた手ごたえがグッと出るんだ。
プレイヤーへのフィードバックは多いほど気持ちいい。見た目の変化・音・セリフの3点セットは、ゲーム作りの鉄板テクニック。[talk]このゲームでは「食べた」という1つのメッセージを、ネコとリンゴの両方が受け取って別々の反応をしているよね。ネコはスコア加算と効果音、リンゴはワープ移動。メッセージはテレビの放送みたいなもので、送る側は1回だけ発信して、受け取る側がそれぞれ自分の役割を果たすんだ。複数のスプライトが連携するゲームには欠かせない仕組みだよ。[/talk]
#9ゲームオーバー処理
[talk class="m-l-n"]タイマーが0になったときの終了処理を作るよ。ネコ側では効果音を鳴らしてからゲームを止める役割だ。[/talk]( ) を受け取ったときで「ゲームオーバー」を受け取ったら、効果音を最後まで再生してから ですべてを止めるんだ。音が鳴り終わるまで待ってから止めることで、ゲームの締めくくりがしっかり伝わるよ。
#10リンゴの退場
[talk class="m-l-n"]ネコのゲームオーバー処理ができたから、最後にリンゴ側も仕上げるよ。[/talk]準備
スプライト「リンゴ」を開く
実装
( ) を受け取ったときで「ゲームオーバー」を受け取ったら、隠すでリンゴを非表示にするんだ。ゲームが終わったのにリンゴがワープし続けてたらおかしいもんね。これでゲーム完成、次回もまた新しい作品を作っていこう!
まとめ
メッセージを使って複数のスプライトが連携する仕組み、うまく作れた?「食べた」という1つのメッセージをネコもリンゴも受け取って、それぞれ別の反応をするのがポイントだよ。タイマーを使った時間制限も、引き算だけで作れるシンプルさがなかなかいいよね。次のゲームも一緒に作っていこう!