移動ノードのmakeRotatorとBreakRotatorの使い道

結論から言いますと、操作キャラクターの移動を『平面だけ』にするためです。そのためYaw(Z)以外の回転軸の値が不要のため、Yaw以外に0を入れています。
もちろん掲載していただいた画像の通りでもできますが、『確実な平面移動』のためにYaw以外を0にしているという感じでしょうか。

そもそも「座標軸のXYZ」と「回転軸のXYZ」を完全に混同しているせいで混乱しているみたいです。

「座標軸のXYZ」と「回転軸のXYZ」は『別物』と考えてください。そもそも仕様が違います。

UnrealEngineの座標軸に関する仕様は理解していると思われるので、下のURLにある回転軸に関する説明と画像引用を元に簡潔ですが説明します。

X = Roll=前後軸に対して回転

Y = Pitch=左右軸まわりの回転

Z = Yaw=上下軸まわりの回転

UnrealEngineの回転軸は上記の通りの仕様です。画像が回転軸をわかりやすく説明しているので、どの値がどの方向に回転するかが分かると思います。

画像を見ていただければわかる通り、平面の移動で影響する回転軸の値は上下軸まわりの回転、つまりYaw(Z)だけです。これだけが単純に言えば唯一平面で『横回転』しているからです

前後軸回転のRoll(X)と左右軸回転のPitch(Y)は『平面移動』をする際に関しては、不要だということが分かると思います。極端に言ってしまえば、操作キャラクターが空中を移動する必要がないため、平面上の縦回転であるPitchとRollは見なくていい、つまり「0」を入れています。

さて、掲載した画像の通りRoll、Pitch、Yaw全てを利用すると、サードパーソンのテンプレートではどのように変わるかをざっと説明します。

Roll、Pitch、Yaw全てを利用して計算しても、カメラが『真横』であれば平面移動の動作としては問題ないと思います。ただし、これには不要な値である縦軸の回転も含めたうえで計算しているため、カメラが真上、真下にに行った時点でキャラクターの挙動がおかしくなります。

試しにYawのみの状態と、Roll、Pitch、Yaw全て入れた状態でカメラを真上に向けてみてください。

それが理解できたのであれば、なぜわざわざBreakとMakeを使ってRoll、Pitchに『0』を入れているのか理由はわかると思います。

1 Like