生成するアクタの向きをキャラクター進行方向と同じにする
今回は、生成するアクタの向きを、キャラクター進行方向と同じにする方法を備忘録にします。
※作業環境:UEバージョン5.3.2
備忘録
プレイヤーの進行方向とスポーンするアクタの向きを同じにしたいときに使った処理です。
もっと良い方法があるかもしれませんが、まとめていきます。
「Rotation From X Vector」と「Get Velocity」ノードを使います。
まず「Get Velocity」ノードで、キャラクター(アクタ)の速度ベクトルを取得します。
「Rotation From X Vector」ノードに速度ベクトルを繋いで、進行方向の回転を取得します。
Outputピンを分解して「Roll」、「Pitch」、「Yaw」に分けます。
「Roll」、「Pitch」、「Yaw」とは各回転軸の名称なのですが、説明を省略します。
詳しく説明しているサイトが多くあるので、そちらをご確認ください。
今回はキャラクターの「Yaw」軸に合わせます。
Outputピンの「Return Value Z(Yaw)」を変数にセットして使用します。
ここまでの工程でキャラクターの進行方向への回転は取得できました。
あとは、任意のタイミングでアクタをスポーンさせるときに、回転を適用します。
キャラクターの進行方向にアクタがスポーンされるようになります。
アクタをスポーンするノードには、「Spawn Actor from Class」ノードを使用します。
上の写真を例にすると、「Fire Ball Rotation」という変数に回転値をセットしています。
「Fire Ball Rotation」を「Spawn Transform Rotation Z (Yaw)」に繋げることで、新しく生成されるアクタの向きがキャラクターの進行方向と同じに設定されます。
新しく生成されるアクタに正面方向への動きを設定していれば、スポーンされた際にキャラクターと同じ進行方向に動き出すはずです。
上の写真は、私が組んだブループリントの一部です。
進行方向への回転を取得し、変数にして使っています。
キャラクターが一定距離進んだ場合のみ変数にセットしているので、移動量が少ないと回転はセットされません。
「==」ノード(Near Equalノード)の一番下の値は、「Error Tolerance」で許容誤差を示しています。
ここでは「100cmの範囲内なら同じとして扱う」みたいな感じになります。
他の記事を探す
他の記事も気になる方は、以下の記事の目次を確認ください。