【スクラッチ】時間を管理するタイマーは使い方により誤差がある!?

PR
【スクラッチ】時間を制御する「タイマー機能」
目次

タイマーの役割

スクラッチのタイマー:タイマーの役割

タイマーは、時間を管理するために使われますが、活用方法はさまざまです。

時間が減少していくカウントダウン方式のタイマーもあれば、時間が加算されていくカウントアップ方式のタイマーもあります。

Scratchでも、次のようなプロジェクトではタイマー機能がよく利用されています。

  • ゲーム
  • 動画
  • 高度なタイマー

具体的な内容とタイマーが果たす役割について見ていきましょう。

ゲーム制作におけるタイマーの役割

スクラッチのタイマー:タイマーの役割(ゲーム)

ゲーム制作において、タイマーは非常に重要な機能です

タイマーを使用することで、ゲーム内の時間経過や一定期間ごとの処理の実行、残り時間の表示などが可能になります。

これらの機能を活用することで、ゲームの難易度を調整したり、ゲームに面白みを加えることができるでしょう。

動画作品におけるタイマーの役割

スクラッチのタイマー:タイマーの役割(動画)

動画作品では、「再生時間を表示する演出」や動画開始までの「カウントダウン」にタイマーを利用します。

高度なタイマーの例

スクラッチのタイマー:タイマーの役割(高度なタイマー)

高度なタイマーとは、次のようなに「複雑な機能を持たせたタイマー(時間を管理する機能)」を指します。

  • ストップウォッチ機能
  • 時間制限機能
  • ポモドーロタイマー機能(複数の特定時間を繰り返す)

スクラッチでの時間管理

スクラッチのタイマー:時間管理をするブロック

Scratch3.0において、時間に関係するブロックは次の通りいくつかあります。

  • 【動き】「()秒で()へ行く」
  • 【動き】「()秒でX座標を()に、y座標を()に変える」
  • 【見た目】「()と()秒言う」
  • 【見た目】「()と()秒考える」
  • 【制御】「()秒待つ」
  • 【調べる】「タイマー」
  • 【調べる】「タイマーをリセット」

「スプライト毎の特定の動き」等、ちょっとした動きを制御する場合は、上記のどれを使って時間を管理しても良いでしょう。

「プロジェクト全体の動き」や「複数のスプライトの動き」を制御する場合は、【調べる】「タイマー」ブロックを使って時間を管理します。

今回の記事では【調べる】「タイマー」ブロックを使って時間管理する方法を見ていきます。

スクラッチのタイマー機能の使い方

スクラッチのタイマー:タイマーブロック

スクラッチでは、【調べる】「タイマー」ブロックで時間を計測する機能が提供されています。

特徴は次の通りです。

  • Scratchが内部で管理しているタイマー値を使える
  • 画面を読み込んだ時に、0がセットされる
  • 画面を読み込んだ時に、時間を測定を開始する
  • 現実の時間経過に合わせて数字(秒数)が増える
  • 数字はミリ秒(0.001秒)単位まで管理できる

実際に使ってみましょう。

タイマーを表示する

【調べる】「タイマー」ブロックをチェックすると、ステージ上にタイマーが表示されます。
タイマーの位置はマウスで移動できますので、作品に合わせて位置を調整してください。

スクラッチのタイマー:タイマーブロックの表示

タイマーは、プロジェクトを画面を読み込んだ時から計測を開始しています。

ゲームでのステージごとの時間管理や時間を計測する場合は、次のように「タイマーをリセット」ブロックを使ってタイマーの値を0に戻す必要があります。

タイマーをリセットする

プロジェクトを表示している間、タイマーはずっと動き続けています
そのため、タイマーを利用するときは最初に値をリセット(0に戻す)する必要があります

【調べる】「タイマーをリセットする」ブロックを使用してください。

スクラッチのタイマー:「タイマーをリセット」ブロック

「タイマーをリセットする」ブロックを利用した後は、タイマーはすぐに計測を始めます。

タイマーを利用する

【調べる】「タイマー」ブロックはミリ秒まで計測されています。秒やそれ以外の表示で表したい場合は加工する必要があります。

タイマーは変数に入れて利用できます。
変数に入れた時点ではミリ秒(少数点第3位)まで管理できますが、スクリプトを実行すると少数点第2位までに丸められますので注意しましょう。

スクラッチのタイマー:スクリプト表示時の少数桁表示

「”変数”って何?」という方は、「【スクラッチでプログラミング】「変数」機能をマスター!理解するとハマらない」もチェックしてください。

タイマー機能の精度を理解する

Scratchが提供している「タイマー」ブロックを使わず、タイマー機能を自作することもできます。

しかし、タイマーの精度が異なりますので、できるだけ「タイマー」ブロックを利用する方が良いでしょう

一般的な自作タイマーの作り方と合わせて、精度にどれくらいの差があるのか比較してみましょう。

変数を使った自作タイマーの作り方

【調べる】「タイマー」ブロックを使わずに時間を計測する方法もあります。

特定の処理を繰り返し実行するための「繰り返し」ブロックと、「1秒待つ」というブロックを使用すると、1秒ごとにカウントするタイマーを作ることができます。

スクラッチのタイマー:自作タイマー

タイマー機能の精度比較

Scratchが提供しているタイマーと自作タイマーを10分間計測してみたところ、計測結果は次の通りでした。

計測時間(秒)Scratchタイマー(秒)自作タイマー(秒)差(秒)
1010100
3030291
6060582
3003002937
60060058713
10分間計測した時のタイマーの差分比較

1分後には2秒、10分後には13秒もの差が出ます。
時間管理を正確に行いたい場合は、Scratchが提供しているタイマーブロックを使いましょう

ストップウォッチ(カウントアップタイマー)の作り方

次のプロジェクトは、Scratchのタイマーブロックを利用して作ったストップウォッチ(カウントアップタイマー)です。指定した時間を計測します。

目次