タイマーの役割
タイマーは、時間を管理するために使われますが、活用方法はさまざまです。
時間が減少していくカウントダウン方式のタイマーもあれば、時間が加算されていくカウントアップ方式のタイマーもあります。
Scratchでも、次のようなプロジェクトではタイマー機能がよく利用されています。
- ゲーム
- 動画
- 高度なタイマー
具体的な内容とタイマーが果たす役割について見ていきましょう。
ゲーム制作におけるタイマーの役割
ゲーム制作において、タイマーは非常に重要な機能です。
タイマーを使用することで、ゲーム内の時間経過や一定期間ごとの処理の実行、残り時間の表示などが可能になります。
これらの機能を活用することで、ゲームの難易度を調整したり、ゲームに面白みを加えることができるでしょう。
動画作品におけるタイマーの役割
動画作品では、「再生時間を表示する演出」や動画開始までの「カウントダウン」にタイマーを利用します。
高度なタイマーの例
高度なタイマーとは、次のようなに「複雑な機能を持たせたタイマー(時間を管理する機能)」を指します。
- ストップウォッチ機能
- 時間制限機能
- ポモドーロタイマー機能(複数の特定時間を繰り返す)
スクラッチでの時間管理
Scratch3.0において、時間に関係するブロックは次の通りいくつかあります。
- 【動き】「()秒で()へ行く」
- 【動き】「()秒でX座標を()に、y座標を()に変える」
- 【見た目】「()と()秒言う」
- 【見た目】「()と()秒考える」
- 【制御】「()秒待つ」
- 【調べる】「タイマー」
- 【調べる】「タイマーをリセット」
「スプライト毎の特定の動き」等、ちょっとした動きを制御する場合は、上記のどれを使って時間を管理しても良いでしょう。
「プロジェクト全体の動き」や「複数のスプライトの動き」を制御する場合は、【調べる】「タイマー」ブロックを使って時間を管理します。
今回の記事では【調べる】「タイマー」ブロックを使って時間管理する方法を見ていきます。
スクラッチのタイマー機能の使い方
スクラッチでは、【調べる】「タイマー」ブロックで時間を計測する機能が提供されています。
特徴は次の通りです。
- Scratchが内部で管理しているタイマー値を使える
- 画面を読み込んだ時に、0がセットされる
- 画面を読み込んだ時に、時間を測定を開始する
- 現実の時間経過に合わせて数字(秒数)が増える
- 数字はミリ秒(0.001秒)単位まで管理できる
実際に使ってみましょう。
タイマーを表示する
【調べる】「タイマー」ブロックをチェックすると、ステージ上にタイマーが表示されます。
タイマーの位置はマウスで移動できますので、作品に合わせて位置を調整してください。
タイマーは、プロジェクトを画面を読み込んだ時から計測を開始しています。
ゲームでのステージごとの時間管理や時間を計測する場合は、次のように「タイマーをリセット」ブロックを使ってタイマーの値を0に戻す必要があります。
タイマーをリセットする
プロジェクトを表示している間、タイマーはずっと動き続けています。
そのため、タイマーを利用するときは最初に値をリセット(0に戻す)する必要があります。
【調べる】「タイマーをリセットする」ブロックを使用してください。
「タイマーをリセットする」ブロックを利用した後は、タイマーはすぐに計測を始めます。
タイマーを利用する
【調べる】「タイマー」ブロックはミリ秒まで計測されています。秒やそれ以外の表示で表したい場合は加工する必要があります。
タイマーは変数に入れて利用できます。
変数に入れた時点ではミリ秒(少数点第3位)まで管理できますが、スクリプトを実行すると少数点第2位までに丸められますので注意しましょう。
「”変数”って何?」という方は、「【スクラッチでプログラミング】「変数」機能をマスター!理解するとハマらない」もチェックしてください。
タイマー機能の精度を理解する
Scratchが提供している「タイマー」ブロックを使わず、タイマー機能を自作することもできます。
しかし、タイマーの精度が異なりますので、できるだけ「タイマー」ブロックを利用する方が良いでしょう。
一般的な自作タイマーの作り方と合わせて、精度にどれくらいの差があるのか比較してみましょう。
変数を使った自作タイマーの作り方
【調べる】「タイマー」ブロックを使わずに時間を計測する方法もあります。
特定の処理を繰り返し実行するための「繰り返し」ブロックと、「1秒待つ」というブロックを使用すると、1秒ごとにカウントするタイマーを作ることができます。
タイマー機能の精度比較
Scratchが提供しているタイマーと自作タイマーを10分間計測してみたところ、計測結果は次の通りでした。
計測時間(秒) | Scratchタイマー(秒) | 自作タイマー(秒) | 差(秒) |
---|---|---|---|
10 | 10 | 10 | 0 |
30 | 30 | 29 | 1 |
60 | 60 | 58 | 2 |
300 | 300 | 293 | 7 |
600 | 600 | 587 | 13 |
1分後には2秒、10分後には13秒もの差が出ます。
時間管理を正確に行いたい場合は、Scratchが提供しているタイマーブロックを使いましょう。
ストップウォッチ(カウントアップタイマー)の作り方
次のプロジェクトは、Scratchのタイマーブロックを利用して作ったストップウォッチ(カウントアップタイマー)です。指定した時間を計測します。
このプロジェクトでは計測時間をユーザーに質問していますので、絵のようなスクリプトになっています。
この中でもストップウォッチ機能を作るために必要なスクリプトは、次の部分です。
制限時間(カウントダウンタイマー)の作り方
次のプロジェクトは、Scratchのタイマーブロックを利用して作ったストップウォッチ(カウントアップタイマー)です。指定した時間を計測します。
このプロジェクトでは計測時間をユーザーに質問していますので、絵のようなスクリプトになっています。
この中でも時間制限機能を作るために必要なスクリプトは、次の部分です。
まとめ:精度の高いタイマーを利用しよう
Scratchが提供しているタイマーブロックを使うと、簡単にストップウォッチやカウントダウンタイマーを作ることができましたね。
カウントダウンタイマーを使用することで、ゲーム内の残り時間の表示やタイムリミットの設定、ステージクリア条件の設定などが可能になります。ぜひ、自分の作品にも取り入れてください。
タイマーを利用した作品をご紹介します。こちらも参考にしてください。