スクラッチコーチキャンプ スクラッチで使える無料素材集
  • 素材
  • 修行
  • はじめての方へ
  • スクラッチゲームの作り方

    #023 ネコ追跡ゲームの作り方|マウスで逃げ切る30秒サバイバル

    #023 ネコ追跡ゲームの作り方|マウスで逃げ切る30秒サバイバル
    この記事は スクラッチコーチで掲載されているオリジナル記事 のバックアップです。
    スターター作品
    なし
    今回の完成サンプル
    なし
    [soy-series name="はじめてのスクラッチ"]

    さぁ、スクラッチでナニ作る!?

    動画で見てみよう

    [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]

    今回の目標

    マウスでリンゴを操作して追いかけてくる腹ペコネコから30秒間逃げ切るゲームを作るよ。タイマーを使ったカウントダウンと、時間が経つほどネコが速く大きくなる難易度アップの仕組みを実装するよ。

    スターター作品をリミックスしよう

    このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
    スターター作品をダウンロード

    #1リンゴの初期設定

    [talk class="m-l-n"]マウスで操作するリンゴを準備するよ。30秒間ネコから逃げ切ればクリアっていうルールだから、まずは制限時間の設定が必要なんだ。[/talk]

    準備

    スプライト「リンゴ」を開く

    リンゴリンゴ
    スプライトについて
    マウスポインターを追いかけ回るリンゴ。タイマーが0になると「escaped」メッセージを送信してゲームオーバーになる。
    どんな役割か
    リンゴがマウスについてくる動きと、タイムアウトで逃げ切り判定を作るよ!残り時間のカウントダウンもここで管理するぞ。

    変数「★残り時間」を追加

    ゲームの残り時間(秒)を管理するグローバル変数。AppleとHungryCatの両方で参照される。

    変数「★残り時間」を追加

    実装

    step-0

    イベントgreenflag が押されたときでスタートしたら、「★残り時間」変数を画面に表示して30にセットするよ。見た目大きさを ( ) %にするで大きさも50%に縮小しておこう。

    確認プレビューしておこうという口コミを寄せてくれた方 確認プレビューしておこう
    旗を押すと残り時間が表示されて30にセットされたね。リンゴのサイズも50%になってちょっと小さくなった。

    #2マウス追従

    準備

    メッセージ「逃げ切った」を追加

    制限時間内にネコがリンゴを捕まえられなかったとき(リンゴが逃げ切ったとき)に送信するメッセージ。

    メッセージ「逃げ切った」を追加

    実装

    step-1

    リンゴがマウスにくっついて動く仕組みと、残り時間のカウントダウンを作るよ。この2つが同じループの中で同時に動くのがポイント。制御ずっとの中でマウスのポインターへ移動し続けることで、リンゴがマウスにぴったりついてくるようになるよ。

    確認プレビューしておこうという口コミを寄せてくれた方 確認プレビューしておこう
    リンゴがマウスについてくるようになった。とりあえず基本となる動きはサクッとできたね。

    #3カウントダウン

    [talk class="m-l-n"]同じループの中で「★残り時間」も更新するんだ。スクラッチのタイマーは自動でカウントアップしていくから、30からタイマーの値を引いて切り下げることで、秒単位のカウントダウンに変換しているよ。[/talk]

    準備

    メッセージ「逃げ切った」を追加

    制限時間内にネコがリンゴを捕まえられなかったとき(リンゴが逃げ切ったとき)に送信するメッセージ。

    メッセージ「逃げ切った」を追加

    実装

    step-2

    「★残り時間」が0になったらイベント( ) を送るで「逃げ切った」メッセージを送信して、勝利判定の完成だ。[talk]スクラッチのタイマーは旗を押すとゼロから勝手に増え続けるから、そのままだとカウントアップにしかならないよね。このゲームでは「30−タイマー」って引き算をすることで、30からゼロへのカウントダウンに変換しているんだ。制限時間を変えたいときは、この30を別の数に変えるだけでOKだよ。[/talk]

    #4ネコの初期設定

    [talk class="m-l-n"]リンゴの動きができたから、次は追いかけてくるハングリーキャットを作っていくよ。[/talk]

    準備

    スプライト「ハングリーキャット」を開く

    ハングリーキャットハングリーキャット
    スプライトについて
    リンゴを追いかけるネコ。リンゴに触れたら「つかまえた!」と言ってゲーム終了。残り時間が少ないほど速く動き、サイズも変化する。
    どんな役割か
    ネコがリンゴを追いかけて触れたらゲームクリアになる動きを作るよ!時間が減るほど速くなって、コスチュームもアニメーションするぞ!

    実装

    step-3

    イベントgreenflag が押されたときで画像効果をリセットして、大きさ100%で表示するよ。ここで制御( ) 秒待つを使って1秒待つのがミソ。ゲームが始まった瞬間にネコが追いかけてきたら逃げる暇がないから、プレイヤーに準備の時間を1秒あげているんだ。

    確認プレビューしておこうという口コミを寄せてくれた方 確認プレビューしておこう
    ハングリーキャットが旗を押した1秒後に表示されるね。エフェクトもクリアされてサイズ100%でスタンバイ。

    #5ネコの追跡行動

    [talk class="m-l-n"]ネコにリンゴを追いかけさせる動きを作るよ。ただ追いかけるだけじゃなくて、時間が経つほど速くなるのがこのゲームの面白いところ。[/talk] step-4

    制御ずっとの中でマウスのポインターの方を向いて進むよ。移動速度は「1から(40−★残り時間)までの乱数」で計算しているんだ。ゲーム開始時は★残り時間が30だから最大10歩、残り0秒になると最大40歩まで加速する。

    確認プレビューしておこうという口コミを寄せてくれた方 確認プレビューしておこう
    ハングリーキャットが左下からスタートして、マウスの方向を追いかけてくるようになった。残り時間が減るほどスピードアップする仕組み。

    #6捕獲時の演出

    step-5

    調べる( ) に触れたでリンゴに触れたかどうかをチェックして、ネコがリンゴに触れたときのリアクションを作るよ。ゲームオーバーの瞬間だから、プレイヤーに「やられた!」って伝わる演出が大事なんだ。

    まず「Bite」の効果音を鳴らして、「つかまえた!」と1秒間セリフを表示するよ。視覚と聴覚の両方でゲームオーバーが伝わるから、インパクトあるよね。最後に制御 ですべてを止めてゲーム終了だよ。

    確認プレビューしておこうという口コミを寄せてくれた方 確認プレビューしておこう
    ハングリーキャットがリンゴに触れるとBiteの効果音が鳴って「つかまえた」って言ってゲームオーバー。捕まったら負け。

    #7逃げ切り時のネコ

    [talk class="m-l-n"]リンゴが逃げ切ったときのネコ側の処理を作るよ。追いかける動きを止めて、フェードアウトで退場させるんだ。[/talk]

    準備

    スプライト「リンゴ」を開く

    リンゴ
    リンゴ

    実装

    step-6

    イベント( ) を受け取ったときで「逃げ切った」メッセージを受け取ったら、まずスプライトの他のスクリプトを止めるよ。これで追跡ループが停止する。そのあと「幽霊」の効果を10ずつ10回変えて、じわじわ透明にしてから隠すんだ。

    いきなり消すんじゃなくて10回に分けて徐々に透明にすることで、「スーッと消えていく」自然なアニメーションになるよ。10ずつ×10回で合計100、「幽霊」効果が最大になって完全に見えなくなる計算だね。

    確認プレビューしておこうという口コミを寄せてくれた方 確認プレビューしておこう
    逃げ切ったメッセージを受け取ると、ハングリーキャットの動きが止まってゴースト効果で徐々に透明になって消えていくよ。あ、ちょっと30秒を一時的に変えて短くしよう。よし、オッケー。

    #8勝利の効果音

    [talk class="m-l-n"]ネコの退場演出ができたから、次はリンゴ側の勝利演出を作るよ。[/talk]

    準備

    スプライト「リンゴ」を開く

    リンゴ
    リンゴ

    実装

    step-7

    イベント( ) を受け取ったときで「逃げ切った」メッセージを受け取ったら、「Triumph」の効果音を最後まで再生して制御 ですべてを止めるよ。同じ「逃げ切った」メッセージをリンゴとネコの両方が受け取って、それぞれ別の処理をするのがメッセージの便利なところだね。

    確認プレビューしておこうという口コミを寄せてくれた方 確認プレビューしておこう
    リンゴ側でも逃げ切ったメッセージを受け取って、Triumphの勝利サウンドが流れてから全ストップ。逃げ切り成功の演出だね。

    #9レベルデザイン(ゲームの難しさを作る)

    [talk class="m-l-n"]リンゴの勝利処理ができたから、最後にネコの見た目の変化を作るよ。時間が経つほどネコが大きくなって迫力が増す演出だ。リンゴに触れやすくもなるから、実際どんどん難しくなっていくっていう設計。同じ逃げ方ばかりしていると追いつかれるという面白みにつながる。[/talk]

    準備

    スプライト「ハングリーキャット」を開く

    ハングリーキャット
    ハングリーキャット

    実装

    step-8

    別のイベントgreenflag が押されたときから始まる独立したループで、大きさを「100−★残り時間」に設定し続けるよ。ゲーム開始時は70%だけど、残り0秒になると100%まで膨らむ。同じループの中で見た目次のコスチュームにするを0.1秒間隔で切り替えて、歩くパタパタアニメーションも同時に動かすんだ。

    [talk]このゲームでは「★残り時間」変数ひとつで、ネコの移動速度(ステップ3)と大きさ(このステップ)の両方をコントロールしているよ。普通はスピード用とサイズ用で変数を分けそうだけど、1つのカウントダウン変数に連動させることで、難易度の上がり方が自然に統一されるんだ。こういう「1つの値で複数のパラメータを動かす」発想は、ゲーム設計でめちゃくちゃ使えるテクニックだよ。[/talk]

    確認プレビューしておこうという口コミを寄せてくれた方 確認プレビューしておこう
    ハングリーキャットのサイズが残り時間に連動して、時間が減るほど大きくなる。コスチュームも0.1秒ごとに切り替わって歩いてる感じ。

    まとめ

    逃げるゲームって仕組みはシンプルだけど、1つの変数で速度もサイズも同時に変わる設計が地味にヤバいよね。タイマーの値を引き算するだけでここまで難易度の変化を作れるのは、覚えておくと絶対に役立つ発想だよ。自分流にアレンジして、もっとドキドキするゲームに育てていこう!

    ブクマよろしくお願いします!という口コミを寄せてくれた方 ブクマよろしくお願いします!
    どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!