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

**URL:** <https://forums.unrealengine.com/t/makerotator-breakrotator/423837>\
**Category:** Blueprint\
**Tags:** unreal-engine, UE4, Blueprint, question\
**Created:** [April 29, 2018, 12:18am UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837 "2018-04-29T00:18:56Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![anonymous\_user\_a7deeaa4](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_a7deeaa4](https://forums.unrealengine.com/u/anonymous_user_a7deeaa4)\
**Post date:** [April 29, 2018, 12:18am UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/1 "2018-04-29T00:18:56Z")

</div>

お世話になります

 ![239108-スクリーンショット-108.png](https://d3kjluh73b9h9o.cloudfront.net/original/4X/5/3/c/53cadd44d3578ba2584e1ee1002f96cf3566aad3.png)

 ![239170-スクリーンショット-110.png](https://d3kjluh73b9h9o.cloudfront.net/original/4X/0/c/3/0c3e3772f4d17db763f4e8a0e9ec27db5cc27de2.png)

移動ノードについてなんですがmakeノードとbreakノードの役割がよくわかりません

なぜz(yaw）の値を必要としているのでしょうか移動ですとｘの左右の動きとｙの前後だと思うのですが

ｚは高さなので(ジャンプなどに使う？）と思うのですが。。

写真一のようなノードではだめなのでしょうか？

たぶん自分はｙａｗの役割が分かっていないんだと思います

---

<div class="post-metadata">

**Author:** ![T\_Sumisaki](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@T\_Sumisaki](https://forums.unrealengine.com/u/T_Sumisaki)\
**Post date:** [April 29, 2018, 2:14am UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/2 "2018-04-29T02:14:58Z")

</div>

Yawの役割というよりは、ベクトルとは何かを調べたほうが良いと思います。  
（この部分はUE4に限った話ではなく、3DCG全般に関わる知識のため、[ご自身で調べて勉強していただきたい](https://www.google.co.jp)ところですが）

下記の記事はUnityを用いていますが、図解されており理解しやすいと思いますので、まずは精読してください。  
[【Unity】図解 Yaw（ヨー）、Pitch（ピッチ）、Roll（ロール）の覚え方 by ユニティちゃん(笑)](http://fantom1x.blog130.fc2.com/blog-entry-255.html)

* * *

さて、問題の画像がダメなのか？という質問の答えですが、「良いも悪いもなく、場合による」というのが答えになります。  
そもそもプログラミングは、状況によって好ましい答えがあるだけで、公式があるわけではありません。  
それぞれの目的によって、取るべき手段が変わってきます。

問題のノードですが、breakとmakeを通すことによって、pitch成分とroll成分を排除しています。  
つまりキャラクターが上下のどちらを向いていても、左右どちらに傾いていても、x-z平面上でどちらを向いているかを取れるようになっています

1のノードは、キャラクターが向いている方向からそのまま前方向と右方向を取得しています。  
この場合、キャラクターが前傾していれば、ForwardVectorはキャラクターの視線方向である下向きのVectorとなるでしょう

この２つの違いは、飛行機を扱うようなゲームを作ってみると理解しやすいかと思います。

* * *

蛇足ですが、MakeRotatorやBreakRotatorは移動ノードにのみ使われるわけではない、ということは認識しておいてください。

---

<div class="post-metadata">

**Author:** ![YuukiOgino](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@YuukiOgino](https://forums.unrealengine.com/u/YuukiOgino)\
**Post date:** [April 29, 2018, 2:24am UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/3 "2018-04-29T02:24:40Z")

</div>

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

そもそも「座標軸のXYZ」と「回転軸のXYZ」を完全に混同しているせいで混乱しているみたいです。  
  
「座標軸のXYZ」と「回転軸のXYZ」は『別物』と考えてください。そもそも仕様が違います。

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

> **[A new, community-hosted Unreal Engine Wiki](https://forums.unrealengine.com/t/a-new-community-hosted-unreal-engine-wiki/141494)**
>
> After over a year in maintenance mode, the official Unreal Engine Wiki is now permanently offline. These resources now live on a new community-run Unreal Engine Community Wiki — ue4community.wiki! You will be able to find content from the official...

 ![239188-brmc-9.jpg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/9/a/0/9a0b9dc263714176c8c4c9c163976dcdb0316700.jpeg)

X = Roll=前後軸に対して回転  
  
Y = Pitch=左右軸まわりの回転  
  
Z = Yaw=上下軸まわりの回転

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

画像を見ていただければわかる通り、平面の移動で影響する回転軸の値は上下軸まわりの回転、つまりYaw（Z）だけです。これだけが単純に言えば唯一平面で『横回転』しているからです  
  
前後軸回転のRoll(X)と左右軸回転のPitch(Y)は『平面移動』をする際に関しては、不要だということが分かると思います。極端に言ってしまえば、操作キャラクターが空中を移動する必要がないため、平面上の縦回転であるPitchとRollは見なくていい、つまり「０」を入れています。

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

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

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

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_a7deeaa4](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_a7deeaa4](https://forums.unrealengine.com/u/anonymous_user_a7deeaa4)\
**Post date:** [April 29, 2018, 2:11pm UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/4 "2018-04-29T14:11:13Z")

</div>

ありがとうございます。

助かりました！！

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_a7deeaa4](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_a7deeaa4](https://forums.unrealengine.com/u/anonymous_user_a7deeaa4)\
**Post date:** [April 29, 2018, 2:11pm UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/5 "2018-04-29T14:11:58Z")

</div>

ありがとうございます。

助かりました！！

サイトの方も拝見させていただきました

ありがとうございます。

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_a7deeaa4](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_a7deeaa4](https://forums.unrealengine.com/u/anonymous_user_a7deeaa4)\
**Post date:** [April 29, 2018, 2:20pm UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/6 "2018-04-29T14:20:32Z")

</div>

確認んですRollはあまり関係ないのですがPITCHで下に回転しようとするのを

防ぐため０にしたということでしょうか？

よろしくお願いします

---

<div class="post-metadata">

**Author:** ![YuukiOgino](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@YuukiOgino](https://forums.unrealengine.com/u/YuukiOgino)\
**Post date:** [April 29, 2018, 4:19pm UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/7 "2018-04-29T16:19:39Z")

</div>

申し訳ないです、疑問の意図が読み取れませんでした。

『カメラの回転でPitchが下に回転するのを防ぐため0を入れている』という理解であっているかという質問でしょうか？  
  
それとも『移動ノードでPitchで0にすることによって、『下方向にキャラクターが回転する』のを防いでる』という理解であっているかという質問でしょうか。

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_a7deeaa4](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_a7deeaa4](https://forums.unrealengine.com/u/anonymous_user_a7deeaa4)\
**Post date:** [April 29, 2018, 10:22pm UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/8 "2018-04-29T22:22:07Z")

</div>

大変失礼しましたｍ（＝＝）ｍ

下の『移動ノードでPitchで0にすることによって、『下方向にキャラクターが回転する』のを防いでる』という理解であっていますでしょうか？

---

<div class="post-metadata">

**Author:** ![T\_Sumisaki](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@T\_Sumisaki](https://forums.unrealengine.com/u/T_Sumisaki)\
**Post date:** [April 30, 2018, 1:11am UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/9 "2018-04-30T01:11:27Z")

</div>

違います。  
Pitch成分を0にすることで、キャラクターが上方向や下方向へ移動する（宙を歩こうとしたり地面に潜ろうとしたりする）のを防いでいます。

例に上がっているノードの利用先は「3Dアクションゲーム」かと思いますので、それを意識した説明にします

 ![239288-イラスト.png](https://d3kjluh73b9h9o.cloudfront.net/original/4X/f/0/1/f015372c3bf76732f8710fa064adacf2ed8ebf92.png)

アクションゲームでは、よく図のように `X-Y平面上の動き` と `Z軸の動き` にキャラクターのアクションを分解します。  
そしてそれぞれのアクションをコントローラに割り当てるわけですが、大体はX-Y平面の移動を `十字キー` や `アナログスティック` 、Z軸の移動を `ボタン` に割り当てていますね？  
（このあたりは好きなゲームを良く観察してください）

X-Y平面は大抵の場合地面と平行です。  
なぜこの平面に沿って動かすかというと、地面の上を歩かせたいからです。

ここでPitchやRollを移動に含んでしまうと、地面と平行だったはずのX-Y平面が傾いてしまい、空中や地面に向かって進み始めてしまいます。  
UE4ではデフォルトでキャラクターや地面のCollision、キャラクターに対するGravityScaleが適用されているため、目に見える不具合は起きていませんが、それらがなければたちまちおかしな動きになるでしょう。

他のゲームや物理現象をよく観察し、考えてみてください。

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_a7deeaa4](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_a7deeaa4](https://forums.unrealengine.com/u/anonymous_user_a7deeaa4)\
**Post date:** [April 30, 2018, 10:20am UTC](https://forums.unrealengine.com/t/makerotator-breakrotator/423837/10 "2018-04-30T10:20:30Z")

</div>

確かにそうですね！！

ありがとうございます

ということはPitchやRollを０にすることでまわりこみや空中（キャラが傾くこと）などを無効化

しているということですね？
