- 1. スクラッチで順次処理を学ぼう!ネコを左右に動かすアニメーションの作り方【初心者向け】
- 2. スクラッチでネコが正方形に動くアニメーションの作り方|座標と向きの使い方
- 3. スクラッチでネコが左右にスケートするアニメーションの作り方|繰り返しの使い方
- 4. スクラッチでネコが走るアニメーションの作り方|コスチューム切り替えの使い方
- 5. スクラッチでネコがランダムな速さで走るアニメーションの作り方|乱数の使い方
- 6. スクラッチでロケットを矢印キーで動かす作り方|条件分岐の使い方
- 7. スクラッチで重力ゲームの作り方|もし〜なら・でなければブロック入門
- 8. スクラッチでスプライト同士がメッセージを送り合う作り方|みんなであいさつ
- 9. スクラッチでキャラが順番に集合するアニメの作り方|みんな集合
- 10. スクラッチで分裂するネコのアートの作り方【クローン入門】
- 11. スクラッチでネコの分身を飛ばす作り方【クローン入門】
- 12. スクラッチで音付きアニメーション!2台の車が走り抜ける作り方
- 13. スクラッチでペン拡張機能のスタンプを使った星のランダムアートの作り方
- 14. スクラッチのペン拡張機能を使って正三角形を描く方法と外角の仕組みを解説
- 15. スクラッチで足し算プログラムの作り方【変数と聞いて待つブロック入門】
- 16. スクラッチでサイコロシミュレーターの作り方│乱数とリストを使いこなそう
- 17. スクラッチでリスト操作11種類を完全マスターする作り方|宇宙船クルー名簿チュートリアル
- 18. スクラッチでペンとブロック定義を使った三角形・四角形の描き方
- 19. スクラッチでリンゴキャッチゲームの作り方!矢印キーとタイマーのアクションゲーム
- 20. スクラッチでネコ追跡ゲームの作り方|マウスで逃げ切る30秒サバイバル
- 21. スクラッチで攻撃シューティングゲームの作り方|クローンと確率でバトル設計
- 22. スクラッチで5秒ぴったり当てゲームの作り方|タイマーと入れ子条件分岐を学ぼう (いまここ)
さぁ、スクラッチでナニ作る!?
動画で見てみよう
チュートリアルの元になった作品
今回の目標
スターター作品をリミックスしよう
このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード
#1ゲームの準備
準備
スプライト「タイムキーパー」を開く
| スプライトについて |
|---|
| 指定秒数ちょうどでスペースキーを押すタイミングゲームのメインスプライト。タイマーを計測し、結果を判定する |
| どんな役割か |
| 秒数ぴったりでスペースキーを押すタイミングゲームを作るよ。カウントが始まったら目標の秒数でキーを押せるかチャレンジ!ドンピシャなら特別な演出が飛び出すよ。 |
変数「★目標秒数」を追加
プレイヤーが押すべき目標の秒数。初期値は5秒
変数「★経過タイム」を追加
スペースキーを押した時点のタイマー値(経過秒数)。画面に表示される
実装
まず「★目標秒数」に5をセットして、「★経過タイム」を0にリセット。変数 ( ) を表示するで「★経過タイム」の値を画面に表示しておくんだ。
大きさを ( ) %にするでスプライトのサイズを300%にして、キャラクターをドーンと大きく見せるよ。
#2カウントダウン開始
ゲームのルールをプレイヤーに伝えるところから。( ) と ( )で「★目標秒数」の値と説明文をくっつけて、「5秒ちょうどでスペースキーを押してね。」というメッセージを組み立てるよ。変数の値をセリフに埋め込むから、「★目標秒数」を変えれば文章も自動で変わるんだ。
「よーい、スタート!!」の合図のあと、タイマーをリセットでタイマーをゼロにリセットしてずっとループに突入。ループの中では「★経過タイム」をタイマーの値で毎フレーム更新して、画面上で秒数がリアルタイムにカウントされる仕組みだよ。
#3タイマー隠し
ずっとループの中に2つの条件分岐を追加するよ。1つ目がこのゲームのミソ――タイマーが2秒を超えたら変数 ( ) を隠すで「★経過タイム」の表示をパッと消す。最初の2秒だけタイムを見せて、あとは体内時計で数えさせるのがこのゲームの面白さの秘密で、もし最初からタイムを一切見せなかったら秒数の感覚がつかめずプレイヤーが戸惑ってしまうんだ。
#4キー検出
準備
メッセージ「ゲーム終了」を追加
スペースキーが押されたときにブロードキャストされるメッセージ。結果判定フェーズへ移行する
実装
2つ目はスペースキーの入力チェック。( ) キーが押されたで押されたかを判定して、押された瞬間に( ) を送って待つで「ゲーム終了」メッセージを送るよ。ここから先は別のスクリプトにバトンタッチする流れだ。
#5結果判定の開始
ここからが判定のメインロジック。もし ( ) ならでなければで、タイマーが4.7より大きくて5.3より小さいかを調べるよ。目標の5秒から前後0.3秒以内なら「惜しい」以上、外れたら「ずれ」と分ける仕組みだね。
この条件ブロックの中にさらに条件分岐が入る「入れ子構造」になっているのがポイント。次のステップでその中身を組み立てていくよ。
ドンピシャ判定
( ) の ( )の切り下げを使って、タイマーの値に10をかけた結果を整数にするんだ。これが50と一致するなら、タイマーは5.0秒台ってこと――つまり0.1秒以内の精度でぴったりヒットした証拠だよ。
成功の演出1
判定ランクに応じたサウンドとセリフで結果を伝えるよ。ドンピシャなら「Triumph」の勝利音を鳴らして「ドンピシャ!」と表示し、 ですべてを止めるんだ。
成功の演出2
ハズレの演出
( ) - ( )でタイマーの値から「★目標秒数」を引いてずれ秒数を計算する。( ) と ( )でその結果と「秒ずれちゃった。」をくっつけてセリフにしているよ。計算結果をそのまま文章に組み込むテクニック、覚えておくと便利だね。

おっとバグがあるよ。「終わるまで音を鳴らす」と、その間にタイマーが進んでしまって、次の「タイマー - 目標秒数」の答えが1秒くらいズレちゃう。プレビューではバグったままだから、チェックしてみて。シンプルに「音を鳴らす」ブロックに差し替えるだけで直るバグなんで、直しておいて〜
これで3段階の判定を持つタイミングゲームが完成だ。「目標秒数」の値を変えるだけで難易度も自由自在だし、判定の幅を狭くすればもっとシビアなゲームにもアレンジできるよ。
まとめ
入れ子の条件分岐とfloor演算を組み合わせて、3段階の精度判定を完成させたね!変数モニターを途中で隠すだけでゲームの難しさがガラッと変わる、発見があったんじゃないかな。「★目標秒数」を3秒にしてみたり、判定の幅を狭くしてもっとシビアにしてみたり、アレンジは無限大だよ。