向いている方向でコマンドを実行するならrotation!【全方向に対応】

向いている方向でコマンドを実行するならrotation!【全方向に対応】

この記事では、Minecraft Java Edition(バージョン1.17.1)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

向いている方向でコマンドを実行したいマインクラフター
「真上とか真下を向いている時にコマンドを実行したい! どういうコマンドを使えば出来るの?」

こんな疑問を解決します!

本記事の内容
  • 向いている方向を検知するには、executeコマンド

こんにちは! マインクラフターのナツメ(@natsume_717b)です。

普段は脱出マップを配布・制作しています!
配布マップ・ダウンロードページ

今回は向いている方向を感知してコマンドを実行できるようになる方法について解説していきます。

使うコマンドとしては、executeコマンドになります。
executeコマンドは様々な使い方ができますが、今回は通常のコマンドに仮定の条件を付与するものを使います。

要するに「○○を向いている場合にコマンドを実行する」といった具合で、コマンドを打っていきます。

実際にやってみた動画はこちら。

この記事では、まず初めに実際のコマンドを紹介しつつ、後半では向いている方向を感知する範囲について紹介しています。

それでは、さっそく見ていきましょう!



向いている方向を検知するには、executeコマンド

コマンドで向いている方向を感知するには、executeコマンドでx_rotationもしくはy_rotationという項目を使っていきます。

この2つの違いは、視線の上下を感知するか左右を感知するかです。

  • x_rotationは上下を感知
  • y_rotationは左右を感知

実際にコマンドとして書き起こしてみましょう。
今回は真上を向いている時にだけ、視界が暗くなるブラインドネスのエフェクトを付与してみます。

使うコマンドはexecuteコマンドであることは説明しましたね。
加えて「真上を向いている場合に~」という条件が欲しいので、ifで仮定文にしつつ、x_rotationで真上を向いている時を感知します。

真上を向いている間は常にコマンドを実行させたいので、常時実行にしているリピートコマンドブロックに入力してください。

というわけで、実際のコマンドは以下の通り。

/execute if entity @p[x_rotation=-90.0..-90.0] run effect give @a minecraft:blindness 1 0 true

ブラインドネスのエフェクトを付与するのは、effectコマンドですね。
run以降は、真上を向いた結果として実行されるコマンドを入力します。

今回の場合はeffectコマンドですね。
とはいえ、今回は向いている方向を感知する方法について解説していますので、effectコマンドの解説は割愛します。

もしeffectコマンドが分からないという方は、【Java版】コマンドでエフェクトを付与する方法【消し方も解説】を参考にしてくださいね。

x_rotationは数字で指定していきます。
この数字は、F3キーを押すことで見ることのできる数字で、上下どの高さを見ているのかが知れます。

上記の画像では、x_rotationの値は-24.2という値になっています。
y_rotationならば、45.5ですね。

そして、x_rotation、y_rotationは範囲を指定することも可能です。
上記のコマンドには、「-90.0..-90.0」と-90.0から-90.0と指定されており、その間に.(ピリオド)が2つ挟まっています。

このピリオドこそが、範囲を指定してくれていることを示しています。
例えば、x_rotationの範囲を30から45までを感知したいというときは、「30.0..45.0」という風に設定すればOKです。

つまり、上記のコマンドで「-90.0..-90.0」と指定したものは、x_rotationの値が-90.0から-90.0の間の時にだけ、要するに-90.0の時だけコマンドが実行するように指定されているわけですね。

x_rotationが示す値と向いている上下の位置に関しては以下の表のようになります。

x_rotationの値視線の向いている位置
-90.0真上
0.0(-0.0)地面と水平
90.0真下

これがy_rotationの場合は、以下のようになります。

y_rotation視線の向いている位置(方角)
0.0(-0.0)南(south)
90.0西(west)
180.0(-180.0)北(north)
-90.0東(east)

x_rotation、y_rotationの2つは、片方の数字だけを指定することも可能です。

まず「x_rotation=-90.0..」という指定をしたとします。
上限となる数値を指定していないので、要するに-90.0以上の値を指定していることになります。

数直線上を思い浮かべると、-90以上ならば90まですべてのx_rotationの値を対象にしているように思うかもしれません。

しかし、x_rotationでは異なります。
なぜか0から90に進んだのちに-90、-0と進みます。

なので、「-90.0..」と指定した場合は-90から-0。
水平を見ている高さから真上を向くまでの間が、コマンドの実行範囲となります。

このあたりは数学を勉強していたりすると学ぶのかもしれませんが、筆者は文系に進んだのでよく分かりません。

ちなみにy_rotationの場合は、0→90→180→-180→-90→-0といった視点が1周する数え方になります。
なので、「y_rotation=90.0..」と打ち込んだのならば、アナログ時計でいう3~12までの範囲でコマンドが実行されるということですね。

というわけで、今回は向いている方向を感知するコマンドのやり方について解説しました。

まとめ

というわけで、今回のまとめです。

今回使ったコマンドはこちら。

今回使ったコマンド
  • 真上を見ると視界が暗くなるコマンド
/execute if entity @p[x_rotation=-90.0..-90.0] run effect give @a minecraft:blindness 1 0 true
ポイント
  • x_rotationで視線の上下を感知し、y_rotationで左右(方角)を感知することができます!
  • .(ピリオド)を使うことで、向いている方向の範囲を指定することもできます!
  • x_rotation、y_rotationの数字は0から正の数の最大まで進んだのちに、負の数の最低となる値から-0に向かいます。

この記事は以上になります。







関連記事

この記事を共有!