- スターター作品
- なし
- 今回の完成サンプル
- なし
さぁ、スクラッチでナニ作る!?
動画で見てみよう
[talk]チャンネル登録して応援よろしく!チャンネル登録する[/talk]チュートリアルの元になった作品
[prj-embed prj="1318446814" mini="1" title="プレイしておこう" prj-title="#023 腹ペコネコから逃げ切れ!" prj-author="ok-scratch"]今回の[prj-link prj="1318446814" title="sb3_20260508225016" author="ok-scratch"]スクラッチを作る参考作品[/prj-link]です。1つのカウントダウン変数でネコの速さとサイズの両方を同時に変えちゃうの、マジでキレッキレな設計。ふつう速度用とサイズ用で変数を別々に作りそうなとこを、「残り時間」を引き算するだけで両方が自然にスケールするって発想がイカす。変数1個でここまで難易度の曲線を作れるって、めちゃくちゃ使えるテクニックだよ。どうやって作ってるか、見ていこう。参考資料:スクラッチプログラミング事例大全集[/prj-embed]今回の目標
スターター作品をリミックスしよう
このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード
#1リンゴの初期設定
[talk class="m-l-n"]マウスで操作するリンゴを準備するよ。30秒間ネコから逃げ切ればクリアっていうルールだから、まずは制限時間の設定が必要なんだ。[/talk]準備
スプライト「リンゴ」を開く
| スプライトについて |
|---|
| マウスポインターを追いかけ回るリンゴ。タイマーが0になると「escaped」メッセージを送信してゲームオーバーになる。 |
| どんな役割か |
| リンゴがマウスについてくる動きと、タイムアウトで逃げ切り判定を作るよ!残り時間のカウントダウンもここで管理するぞ。 |
変数「★残り時間」を追加
ゲームの残り時間(秒)を管理するグローバル変数。AppleとHungryCatの両方で参照される。
実装
#2マウス追従
準備
メッセージ「逃げ切った」を追加
制限時間内にネコがリンゴを捕まえられなかったとき(リンゴが逃げ切ったとき)に送信するメッセージ。
実装
リンゴがマウスにくっついて動く仕組みと、残り時間のカウントダウンを作るよ。この2つが同じループの中で同時に動くのがポイント。ずっとの中でマウスのポインターへ移動し続けることで、リンゴがマウスにぴったりついてくるようになるよ。
#3カウントダウン
[talk class="m-l-n"]同じループの中で「★残り時間」も更新するんだ。スクラッチのタイマーは自動でカウントアップしていくから、30からタイマーの値を引いて切り下げることで、秒単位のカウントダウンに変換しているよ。[/talk]準備
メッセージ「逃げ切った」を追加
制限時間内にネコがリンゴを捕まえられなかったとき(リンゴが逃げ切ったとき)に送信するメッセージ。
実装
「★残り時間」が0になったら( ) を送るで「逃げ切った」メッセージを送信して、勝利判定の完成だ。[talk]スクラッチのタイマーは旗を押すとゼロから勝手に増え続けるから、そのままだとカウントアップにしかならないよね。このゲームでは「30−タイマー」って引き算をすることで、30からゼロへのカウントダウンに変換しているんだ。制限時間を変えたいときは、この30を別の数に変えるだけでOKだよ。[/talk]
#4ネコの初期設定
[talk class="m-l-n"]リンゴの動きができたから、次は追いかけてくるハングリーキャットを作っていくよ。[/talk]準備
スプライト「ハングリーキャット」を開く
| スプライトについて |
|---|
| リンゴを追いかけるネコ。リンゴに触れたら「つかまえた!」と言ってゲーム終了。残り時間が少ないほど速く動き、サイズも変化する。 |
| どんな役割か |
| ネコがリンゴを追いかけて触れたらゲームクリアになる動きを作るよ!時間が減るほど速くなって、コスチュームもアニメーションするぞ! |
実装
#5ネコの追跡行動
[talk class="m-l-n"]ネコにリンゴを追いかけさせる動きを作るよ。ただ追いかけるだけじゃなくて、時間が経つほど速くなるのがこのゲームの面白いところ。[/talk]ずっとの中でマウスのポインターの方を向いて進むよ。移動速度は「1から(40−★残り時間)までの乱数」で計算しているんだ。ゲーム開始時は★残り時間が30だから最大10歩、残り0秒になると最大40歩まで加速する。
#6捕獲時の演出
( ) に触れたでリンゴに触れたかどうかをチェックして、ネコがリンゴに触れたときのリアクションを作るよ。ゲームオーバーの瞬間だから、プレイヤーに「やられた!」って伝わる演出が大事なんだ。
まず「Bite」の効果音を鳴らして、「つかまえた!」と1秒間セリフを表示するよ。視覚と聴覚の両方でゲームオーバーが伝わるから、インパクトあるよね。最後に ですべてを止めてゲーム終了だよ。
#7逃げ切り時のネコ
[talk class="m-l-n"]リンゴが逃げ切ったときのネコ側の処理を作るよ。追いかける動きを止めて、フェードアウトで退場させるんだ。[/talk]準備
スプライト「リンゴ」を開く
実装
( ) を受け取ったときで「逃げ切った」メッセージを受け取ったら、まずスプライトの他のスクリプトを止めるよ。これで追跡ループが停止する。そのあと「幽霊」の効果を10ずつ10回変えて、じわじわ透明にしてから隠すんだ。
いきなり消すんじゃなくて10回に分けて徐々に透明にすることで、「スーッと消えていく」自然なアニメーションになるよ。10ずつ×10回で合計100、「幽霊」効果が最大になって完全に見えなくなる計算だね。
#8勝利の効果音
[talk class="m-l-n"]ネコの退場演出ができたから、次はリンゴ側の勝利演出を作るよ。[/talk]準備
スプライト「リンゴ」を開く
実装
( ) を受け取ったときで「逃げ切った」メッセージを受け取ったら、「Triumph」の効果音を最後まで再生して ですべてを止めるよ。同じ「逃げ切った」メッセージをリンゴとネコの両方が受け取って、それぞれ別の処理をするのがメッセージの便利なところだね。
#9レベルデザイン(ゲームの難しさを作る)
[talk class="m-l-n"]リンゴの勝利処理ができたから、最後にネコの見た目の変化を作るよ。時間が経つほどネコが大きくなって迫力が増す演出だ。リンゴに触れやすくもなるから、実際どんどん難しくなっていくっていう設計。同じ逃げ方ばかりしていると追いつかれるという面白みにつながる。[/talk]準備
スプライト「ハングリーキャット」を開く
実装
別の
[talk]このゲームでは「★残り時間」変数ひとつで、ネコの移動速度(ステップ3)と大きさ(このステップ)の両方をコントロールしているよ。普通はスピード用とサイズ用で変数を分けそうだけど、1つのカウントダウン変数に連動させることで、難易度の上がり方が自然に統一されるんだ。こういう「1つの値で複数のパラメータを動かす」発想は、ゲーム設計でめちゃくちゃ使えるテクニックだよ。[/talk]
まとめ
逃げるゲームって仕組みはシンプルだけど、1つの変数で速度もサイズも同時に変わる設計が地味にヤバいよね。タイマーの値を引き算するだけでここまで難易度の変化を作れるのは、覚えておくと絶対に役立つ発想だよ。自分流にアレンジして、もっとドキドキするゲームに育てていこう!