Minecraftのコマンドでは、特定のプレイヤーの視点を利用して別のプレイヤーを追従させたり、カメラのような演出を作ったりできます。しかし、execute positioned ^ ^ ^などの相対座標を使うと、実行位置だけでなく向きの扱いによって意図しない挙動になることがあります。
この記事では、プレイヤーの視点の前に別のプレイヤーを常に配置する方法や、視点が固定されてしまう理由、追従カメラのような演出を作る際の考え方について解説します。
^ ^ ^の相対座標で視点方向を利用する仕組み
Minecraftのコマンドにおける^ ^ ^は、ワールドの座標ではなく、実行者の向いている方向を基準にした座標です。
例えば^ ^ ^1は「自分が向いている方向へ1ブロック先」という意味になります。そのため、プレイヤーの視線の前に何かを配置する処理を作る場合によく使われます。
しかし、注意点として、execute positioned ^ ^ ^だけを使うと、位置だけを変更した状態になり、実行時の回転情報が意図したものと変わる場合があります。
視点が固定されてしまう原因
視点方向が固定される主な原因は、executeで座標を移動した後の実行基準が変化しているためです。
例えば以下のような処理を考えます。
/execute as @a[tag=a] at @p[tag=b] positioned ^ ^ ^0.1 run tp @s ~ ~ ~
この場合、@p[tag=b]の位置を基準にはできますが、実行対象の向きや回転情報が正しく引き継がれないことがあります。その結果、テレポートされた側の視点が固定されたように見えることがあります。
プレイヤーの視線方向を維持したまま位置だけ追従させたい場合は、位置だけでなく回転も指定する必要があります。
プレイヤーの視点前へ追従させる基本的な方法
プレイヤーBの視点前にプレイヤーAを移動させ続けたい場合は、Bを基準にしてAをテレポートする処理をリピートさせます。
例えば以下のような形になります。
/execute as @a[tag=b] at @s run tp @a[tag=a] ^ ^ ^0.1
このコマンドでは、Bの位置と向きを基準にして、AをBの前方0.1ブロックへ移動させます。リピートコマンドブロックで毎tick実行することで、常に追従する動きを作れます。
ただし、Aを透明化してスペクテイターモードのような演出にする場合、プレイヤーの当たり判定や表示状態によって見え方が変わるため、状況に応じて調整が必要です。
向きを固定せずに追従させるポイント
プレイヤーの向きを固定したくない場合は、tpコマンドで回転を上書きしないことが重要です。
テレポートコマンドでは、座標だけでなくYaw(左右方向)やPitch(上下方向)も指定できます。回転値を指定すると、その値に強制的に変更されるため、結果的に視点固定のような状態になります。
例えば、位置だけを変更したい場合は、回転指定を省略する形にします。
/execute as @a[tag=b] at @s run tp @a[tag=a] ^ ^ ^0.1
このようにすることで、Bの視線方向を利用しながらAを移動できます。
カメラ演出を作る場合の別の考え方
Minecraftで映画のようなカメラ視点を作る場合、単純なtpだけではなく、スペクテイターモードやエンティティを利用する方法もあります。
例えば、透明化した防具立てや別のエンティティをカメラ位置として利用し、プレイヤーをそこへ追従させることで滑らかな視点移動を作ることができます。
また、Java版と統合版ではexecuteやtpコマンドの仕様が異なる部分があるため、使用しているバージョンに合わせたコマンド調整が必要です。
まとめ|視点前へのtpは位置と回転を分けて考える
Minecraftでプレイヤーの視点前に別のプレイヤーを移動させる場合、重要なのは「どのプレイヤーを基準にするか」と「回転情報をどう扱うか」です。
^ ^ ^は視線方向を利用できる便利な機能ですが、executeの使い方によっては向きが固定されたような状態になることがあります。
追従カメラのような動きを作る場合は、基準プレイヤーの位置と向きを正しく利用し、リピート実行で毎tick更新することで自然な追従動作を実現できます。


コメント