今回は、スコアボードというコマンドを使って画面の右にタイマーを表示し、カウントアップおよびカウントダウンができるタイマーの作り方を紹介します。
このカウントタイマーはミニゲームをする時に便利で、例えば「制限時間で〇〇をいくつ集められるか」とか「〇〇するまでの時間をタイムアタック」といった遊びでも使えます。
コマンドはすべてコマンドブロックで管理しており、PC版であれば「ストラクチャーブロック」を使ってコマンドブロックをコピーすることで、別のワールドでもすぐに使うことができます。
今回は簡単に作れることを重視しているためカウントは秒単位のみですが、レバー1本でカウント開始可能で、コマンドブロックから離れても動作し続けるようになっています。
後半では応用として、タイマーが0になった時に効果音が鳴らしたり、画面中央に大きな文字を出したりする方法なども紹介しますので、ぜひ参考にしてみてください。
コマンドブロックの入手方法
まずはコマンドブロックを入手しましょう。
「設定」→「ゲーム」からゲームモードを「クリエイティブ」にして、「チートの実行」がオンになっている状態で、以下のコマンドをチャットに入力して実行します。
/give @s command_block
これで、自分のアイテム欄にコマンドブロックが追加されたかと思います。
カウントタイマーの作り方
コマンドブロックが入手できたら、さっそくカウントタイマーを作っていきます。
コマンドブロックを設置する
まずは、コマンドブロックを下の画像のように設置します。
コマンドブロックにはピストンや観察者と同じように「向き」があるので、矢印の模様に注意して設置してください。
コマンドブロックが設置できたら、上の画像の番号順にコマンドブロックの設定をしていきます。
① コマンドブロックのチャットログを非表示にする
①のコマンドブロック(左から2番目)には、以下のコマンドの入力と設定をします。
/gamerule commandblockoutput false
ブロックの種類:衝撃
条件:無条件
レッドストーン:レッドストーンが必要
これは、コマンドブロックで実行したコマンドをチャットに表示しないようにするコマンドです。
これを設定しておかないと、タイマーをカウントするたびにメッセージが表示されてしまいます。
② ティック領域を追加する
②のコマンドブロック(左から3番目)には、以下のコマンドの入力と設定をします。
/tickingarea add ~10 ~ ~10 ~-10 ~ ~-10
ブロックの種類:チェーン
条件:無条件
レッドストーン:常にアクティブ
コマンドブロックの周囲にティック領域(シミュレーション距離)を追加するコマンドです。
マイクラでは、プレイヤーのシミュレーション距離の範囲外は時間が止まってしまう仕様のため、コマンドブロックから離れるとタイマーが停止してしまいます。
このコマンドを使ってコマンドブロックの周囲にティック領域を追加しておけば、プレイヤーが離れてもコマンドブロックが動作し続けます。
③ スコアボードを作成する
③のコマンドブロックには、以下のコマンドの入力と設定をします。
/scoreboard objectives add timer dummy 好きな文字
ブロックの種類:チェーン
条件:無条件
レッドストーン:常にアクティブ
ワールド内にスコアボードのオブジェクトを作るコマンドです。
このコマンドだけではスコアボードは表示されませんが、内部的にスコアボードが作られます。
④ スコアボードをサイドバーに表示する
④のコマンドブロックには、以下のコマンドの入力と設定をします。
/scoreboard objectives setdisplay sidebar timer
ブロックの種類:チェーン
条件:無条件
レッドストーン:常にアクティブ
前のコマンドで作成したスコアボードを、サイドバー(画面右)に表示するためのコマンドです。
⑤ スコアボードに時間を設定する
⑤のコマンドブロックには、以下のコマンドの入力と設定をします。
/scoreboard players set 秒 timer 好きな時間(秒)
ブロックの種類:チェーン
条件:無条件
レッドストーン:常にアクティブ
スコアボードに数字を設定して表示するコマンドです。
最初にお話した通り、今回は簡単に作れることを重視しているためカウントは秒単位のみとなります。
⑥ タイマーをカウントするコマンド
⑥のコマンドブロック(一番左)には、以下のコマンドの入力と設定をします。
【カウントアップタイマーの場合】
/scoreboard players add 秒 timer 1
【カウントダウンタイマーの場合】
/scoreboard players remove 秒 timer 1
ブロックの種類:反復
条件:無条件
レッドストーン:レッドストーンが必要
ティックの遅延:20
スコアボードに設定した数字を、1ずつ増やす(add)、もしくは1ずつ減らす(remove)コマンドです。
マイクラの世界は「ティック」という時間で管理されており、1ティックは0.05秒なので、20ティックで1秒になります。
「ブロックの種類:反復」「ティックの遅延:20」に設定しているので、1秒毎にこのコマンドが実行され、数字が増減するわけです。
レバーを設置して完成
最後に、⑥のコマンドブロックにレバーを取り付けます。
このレバーを下げると、ここまで設定したコマンドがまとめて実行され、スコアボードが表示されてタイマーが開始します。
タイマーを停止する場合はレバーを上げ、もう一度レバーを下げると時間がリセットされてタイマーが開始します。
これでカウントタイマーは完成です。
ここからはカウントタイマーの応用の紹介です。
タイマーが0になった時にアクションを起こす方法
タイマーが0になった時に、メッセージを表示したり効果音を鳴らすといったアクションを起こす方法を紹介します。
複数のアクションを同時に起こす事もできますし、カウントアップタイマーの特定の秒数にも設定できます。
タイマーが0になった事を検知する
タイマーが0になった時にアクションを起こすために、まずはタイマーが0になった事を検知するコマンドブロックを設置します。
上の画像のように、⑥のコマンドブロックの矢印の先に⑦のコマンドブロックを設置します。
⑦のコマンドブロックには以下のコマンドの入力と設定をしてください。
/scoreboard players test 秒 timer 0 0
ブロックの種類:チェーン
条件:無条件
レッドストーン:常にアクティブ
「timer」というスコアボードの「秒」が0~0の範囲になったことを検知するコマンドです。
「0 0」を「60 60」などにすれば、カウントアップタイマーの場合でも指定した秒数になった事を検知できます。
アクションを実行するコマンドブロックの設定
次に、⑦のコマンドブロックの矢印の先に⑧のコマンドブロックを設置します。
そして、⑧のコマンドブロックに以下の設定をします。
ブロックの種類:チェーン
条件:条件付き
レッドストーン:常にアクティブ
「条件:条件付き」にすることで、⑦のコマンドブロックが「0」を検知した時のみ、このコマンドブロックが作動します。
あとは起こしたいアクションのコマンドを入力すれば、タイマーが0になった時にそのコマンドが実行されます。
アクションの設定例
コマンドで実行するアクションの設定例をいくつか紹介します。
画面中央に大きな文字を出す
/title @a title STOP
画面中央に「STOP」という大きな文字を出すコマンドです。
「STOP」は自由に変更できます。
効果音を鳴らす
/playsound raid.horn @a
襲撃者イベント時の角笛の音を鳴らすコマンドです。
「raid.horn」を変更すれば、さまざまな音が鳴らせます。
効果音の一覧は、あおいさんという方がまとめてくれているのでそちらをご覧ください。
タイマーを自動で停止させる
/setblock レバーの座標 air
レバーの座標に「空気ブロック(air)」を置くことで、タイマーを自動で停止させられます。
ストラクチャーブロックでコピーしていろんなワールドで使う場合は、コマンドブロックからレバーまでの距離を計算して「~」で座標を指定すると良いと思います。
ただ、座標を指定するコマンドを使い慣れてないと少し難しいかもしれません。
コマンドの座標の入力については以下の記事でも簡単にですが解説しているので参考にしてみてください。
カウントタイマーの設定を削除する
作り方の解説でも紹介した「ティック領域の削除」や「スコアボードの削除」などを、タイマーが0になったタイミングでまとめて実行することも可能です。
これらをすべて実行すれば、レバーを倒す前の状態に戻せます。
【コマンドのチャット出力を元に戻す】
/gamerule commandblockoutput true
【追加したティック領域の削除】
/tickingarea remove_all
【スコアボードの削除】
/scoreboard objectives remove timer
タイマー開始前に大きな文字でカウントダウンを入れる方法
タイマー開始前に、画面中央に大きな文字でカウントダウンを入れる方法を紹介します。
カウントダウンの作り方としては、「/title」コマンドと、コマンドブロックの「ティックの遅延」を活用します。
コマンドブロックの設置
まずはコマンドブロックの設置です。
下の画像のように、レバーが付いている⑥のコマンドブロックから、「カウントダウンの数+1」のコマンドブロックを設置します。
(効果音を鳴らす場合はさらに+1)
今回は例として、3カウントで効果音有りのものを作ります。
コマンドブロックの設定
まず、Ⓐのコマンドブロックには、以下のコマンドの入力と設定をします。
Ⓐ
/title @a title 3
ブロックの種類:衝撃
条件:無条件
レッドストーン:レッドストーンが必要
次に、Ⓑ~Ⓓのコマンドブロックには、以下のコマンドの入力と設定をします。
Ⓑ
/title @a title 2
©
/title @a title 1
Ⓓ
/title @a title START
ブロックの種類:チェーン
条件:無条件
レッドストーン:常にアクティブ
ティックの遅延:20
これでカウントダウンが出るようになりました。
効果音を鳴らす場合は、Ⓔのコマンドブロックに以下のコマンドの入力と設定します。
Ⓔ
/playsound raid.horn @a
ブロックの種類:チェーン
条件:無条件
レッドストーン:常にアクティブ
スコアボードの作成を遅延させる
このままだとカウントダウンの開始と同時にカウントタイマーも動き始めてしまうので、「START」が表示された時にカウントタイマーが動くようにします。
そのためには、カウントタイマーのコマンドブロックである③と⑤の設定を変更します。
スコアボードの作成をしている③のコマンドブロックの「ティックの遅延」の設定を、「カウントダウンの数×20」に変更します。
今回は3カウントなので「60」ですね。
そして、スコアボードの時間設定をしている⑤のコマンドブロックの時間設定を、カウントアップタイマーなら「-1」、カウントダウンタイマーなら「+1」しておきます。
これをしておくことで、コマンドブロックの動作順の関係で「START」の文字が出た時にタイマーが1秒進んでしまっている、という問題を解決できます。
これで、画面中央に大きな文字でカウントダウンしてから、タイマーを開始できるようになりました。
コマンドブロックの配置をコンパクトにするには?
今回の作り方ではコマンドブロックをひたすら横に繋げて置いてますが、矢印さえ繋がっていれば良いので、下の画像のように置くこともできます。
これで、配置をコンパクトにできますね。
カウントタイマーが正しく動作しない時は?
カウントタイマーが動作しない原因としては、ほとんどはコマンドの入力ミスか、コマンドブロックの設置ミスおよび設定ミスです。
細かい文字をいっぱい入力したり同じような設定をたくさんするので、ミスはよく起こると思います。
以下の手順でコマンドブロックの確認作業をしてみて下さい。
まずは、それぞれのコマンドブロックの「前回の実行結果」を確認します。
とくに、「スコアボードが表示されない場合はスコアボードの表示に関するコマンドブロックを確認」といったように、問題点のコマンドブロックを優先的にチェックします。
前回の実行結果に「構文エラー」や「〇〇は見つかりませんでした」と出ている場合は、コマンドに誤字がないか、設定するべきコマンドブロックに設定するべきコマンドを入力しているか(①や②といった順番が間違っていないか)、などを確認します。
前回の実行結果に何も表示されていない場合は、コマンドブロックの設置向きと、コマンドブロックの左の設定を再確認して下さい。
ほとんどの場合はこれで解消できるかと思います。
まとめ
今回は、コマンドおよびコマンドブロックを使ったカウントタイマーの作り方について紹介させて頂きました。
PC版の場合は「ストラクチャーブロック」でコピー(インポート)しておけば、別のワールドでもすぐに呼び出して、初期状態から遊ぶミニゲームや競技などにも使えます。
いつもの建築や収集と違うマイクラの遊び方ができるので、ぜひ活用してみてください。
カウントタイマーを活用して自作の対戦型ミニゲームを作りました
コメント