cameraコマンドとは、プレイヤーの表示画面を設定するコマンドで、三人称視点に強制的に変更することや、指定した座標・向きの画面を表示させるなど、特に演出面において非常に強力なコマンドです。このページではこのcameraコマンドについて解説しています。
プリセットによる視点変更
単に視点を三人称などに変更する場合は以下のような構文になります。
/camera <players> set <preset>
presetでは基本的に
- minecraft:first_person
- minecraft:third_person
- minecraft:third_person_front
- minecraft:free
の4つから選ぶことになります。上から一人称、三人称後方、三人称前方となり、最後のminecraft:freeはcameraコマンド用のもので、カメラの位置を座標で指定する使い方をする場合に用います。
具体例としてプレイヤーの視点を三人称後方に変更する場合は以下のように書きます。
/camera @s set minecraft:third_person
実行するとカメラが三人称視点に固定されます。cameraコマンドにより設定された視点はビデオ設定やF5キーによる設定の変更ができず、コマンドで解除する必要があります。cameraコマンドによる視点の解除は以下のように書きます。
/camera @s clear
実行すると視点がもとに戻ります。
なお最後の方で記載していますが、このカメラプリセットについてはアドオンで追加することが可能です。
posとrot/facingによるカメラの位置設定
次にcameraコマンドで最も使うであろう指定した座標のカメラを表示する方法についてです。構文は以下のようになっています。
/camera <players> set <preset> [pos <x> <y> <z>] [rot <xRot:value> <yRot:value>]
/camera <players> set <preset> [pos <x> <y> <z>] [facing <lookAtEntity:target>]
/camera <players> set <preset> [pos <x> <y> <z>] [facing <lookAtPosition:x y z>]
<preset>までは先ほどの説明と同じですが、posとrot/facingによってカメラの位置、向きを設定できます。書き方としてtpコマンドと似ています。なお、pos、facingを使う場合はpresetにminecraft:freeを用いる必要があります。
rot
[pos <x> <y> <z>] で座標を入力し、[rot <xRot> <yRot>]で垂直方向と水平方向の向きを決定します。xRotについてはそれぞれ-90~90にする必要があり、-90が真上、0が水平、90が真下になります。yRotは-180~180にする必要があり、-90がx負方向、 0がz正方向、90がx正方向、-180と180がz負方向となります。
xRot、yRotはtpコマンドで使うものと一緒ですが、tpコマンドでは<yRot> <xRot>の構文で順番が逆になっているため注意が必要です。
使用例:座標(10, 0, 20)に向き(45, 90)の視点を表示する
/camera @s set minecraft:free pos 10 0 20 rot 45 90
facing
facingによる向きの指定の場合、向く対象をエンティティか座標のどちらかで指定します。
エンティティによる指定の場合、例えば以下のように書きます。
/camera @s set minecraft:free pos 10 0 20 facing @e[type=villager,c=1]
実行すると、位置は座標(10, 0, 20)で、コマンド実行地点から最も近い村人を向いたカメラ視点になります。注意点として、セレクタによる対象が複数体ある場合はコマンドが失敗します。このあたりもtpコマンドと同じです。
また座標による指定の場合、例えば以下のように書きます。
/camera @s set minecraft:free pos 10 0 20 facing 0 10 0
実行すると、位置は座標(10, 0, 20)で、座標(0, 10, 0)の方向を向いたカメラ視点になります。
easeによるアニメーション
cameraコマンドでは、視点を切り替える際に瞬時に切り替えるだけではなく、現在の画面状態から滑らかに遷移させることが可能です。これを可能にするeaseオプションの構文は以下のようになります。
/camera <players> set <preset> [ease <easeTime> <easeType>] [pos <x> <y> <z>] [rot <xRot> <yRot>]
easeを使う場合はposの前に書きます。easeでは遷移時間を設定するeaseTimeと、どのように画面を動かすを設定するeaseTypeオプションがあります。
easeTimeには小数を含む数値(単位は秒)を入力します。この数値がposで指定した座標に遷移するまでの時間となります。
easeTypeは等速で動く「linear」、ばねのように動く「spring」のほかに、計30種類の様々な変化率のイージング関数による指定が可能です。イージング関数には少しずつ早くなる関数や、行ったり戻ったりしながら動く関数などさまざまあり、サンプルはイージング関数チートシート (easings.net)から確認できます。例えばチートシートの「easeInSine」とある関数を用いたい場合、コマンドで入力する際は「in_sine」のように最初のeaseを取り除き、各語句の先頭は大文字ではなくアンダーバーで表します。
使用例1:座標(10, 10, 10)、向き(0, 0)にlinearで5秒間動くカメラを設定する
/camera @p set minecraft:free ease 5 linear pos 10 10 10 rot 0 0
使用例2:座標(10, 10, 10)、座標(0, 0, 0)を向き、in_boundで3秒間動くカメラを設定する。
/camera @p set minecraft:free ease 3 in_bounce pos 10 10 10 facing 0 0 0
実行時の様子
fadeのよる画面の色操作
fadeオプションでは、画面全体の色を一時的に変更できます。プレイヤーがベッドで寝るときに徐々に画面が暗くなるものと同じ効果で動作しているようです。画面の位置を操作できるsetと比べると用いる機会は少ないかもしれませんが、fadeも便利な機能です。
fadeの構文は以下のようになります。
/camera <players> fade [time <fadeInSeconds> <holdSeconds> <fadeOutSeconds>] [color <red> <green> <blue>]
fadeはサブオプションとしてフェード時間を調整するtimeと、画面の色を調整するcolorがあります。
timeオプションではフェードイン時間、待機時間、フェードアウト時間を調整できます。それぞれ秒単位で入力しますが、制約として各値は10以内にする必要があります。timeオプションは必須ではなく、入力しない場合はデフォルト値が使用されます。デフォルト値はそれぞれ1、0.5、1です。
colorオプションでは設定したい画面全体の色を指定します。赤、緑、青のRGB値をそれぞれ0~255の整数値で指定します。透過度は記事執筆時現在は指定することはできません。なおcolorオプションも必須ではなく、入力しない場合はRGBすべて0(黒色)のデフォルト値が使用されます。
使用例:フェードイン2秒、待機時間3秒、フェードアウト1.5秒でオレンジ色の画面にする
/camera @s fade time 2 3 1.5 color 255 128 0
実行時の様子
(発展)プリセット作成
cameraコマンドでthird_personやfreeなどと入力するプリセットはアドオンで新たに作ることが可能です。プリセットにより、主にプレイヤーのポーション効果の反映、音が聞こえる位置を変更することが可能です。
作り方ですが、まず空のビヘイビアパックを作成します。ビヘイビアパックの作成方法はこちら(準備中)。
ビヘイビアパックを用意したらmanifest.jsonと同じ階層に「cameras」フォルダを作成し、さらにcamerasフォルダの中に「presets」フォルダを作成します。作成したpresetsフォルダに適当に名前を付けたjsonファイルを用意し、プリセット情報を記述していきます。
カメラプリセットのJSON構文は以下になります。
{
"format_version": "1.19.50",
"minecraft:camera_preset": {
"identifier": プリセット名,
"inherit_from": 継承元プリセット,
"player_effects": bool,
"listener":"player"または"camera",
"pos_x": x座標,
"pos_y": y座標,
"pos_z": z座標,
"rot_x": 垂直回転,
"rot_y": 水平回転
}
}
identifierではカメラプリセットの名前を設定します。例えば「test:preset1」のように識別子:プリセット名と書きます。
inherit_formでは継承するプリセットを指定します。現在継承できるのは「minecraft:free」もしくはほかのオリジナルプリセットです。
player_effectsはプレイヤーの暗視や暗闇などの視覚に作用するポーション効果を反映させるかどうかを決定します。minecraft:free継承時のデフォルトはfalse(反映させない)です。
listenerはプリセット使用時に音がカメラがある座標から聞こえるのか、プレイヤーがいる座標から聞こえるのかを決定します。minecraft:free継承時のデフォルトはcameraです。
pos、rotはカメラの座標と向きです。コマンド実行時にposやrot/facingが設定されてない場合はこの値が利用されます。minecraft:free継承時のデフォルトはすべて0です。
identifierとinherit_formのみ必須でほかは任意です。入力していない値は継承元の値が使用されます。
具体例:ポーション効果をtrueにし、リスナーをプレイヤーにしたプリセット
{
"format_version": "1.19.50",
"minecraft:camera_preset": {
"identifier": "test:custom1",
"inherit_from": "minecraft:free",
"player_effects": true,
"listener": "player"
}
}
なお公式によるプリセット記述例がいくつかあるのですが、アドオンテンプレートにはなぜか含まれていません。ファイルを確認したい場合はゲーム本体のファイルもしくは公式のサーバー実行ファイルの中から探す必要があります。
コメント