公開日:2025/05/20  更新日:2025/05/26

UE5のエイムオフセットについて

UE5のエイムオフセットはブレンドスペースの1種であり、アニメーションを加算することで違和感なく表示する仕組みのこと。

特に銃のエイム(照準を合わせる)動作を行う際に使用される。エイムオフセットを使うことで移動モーションを阻害せずに様々な方向へ照準を行うモーションを作成できる。

詳しいやり方を紹介していく。

なお、以前の記事で、サードパーソンテンプレートでプロジェクトを作成し必要なアニメーションを用意し銃を持たせ、ブレンドスペースで銃を持ったまま様々な方向へ移動可能にしている。先にこちらを確認してほしい。

銃の持ち方

ブレンドスペース

Get・SetやSequenceやBranchといった基礎的なノードがわからない場合は先に以下記事を確認してほしい。

アンリアルエンジンのノードの一覧

UE5のエイムオフセットの目次

AdditiveSetttings(加算設定)の変更
エイムオフセットの作成
エイムと移動のブレンド
エイムオフセットを発動させる
目次にもどる

AdditiveSetttings(加算設定)の変更

銃でエイムする時のアニメーションのAdditiveSetttings(加算設定)の変更を行っていく。

コンテンツドロワーを開き、銃の持ち方の記事で銃アニメーションを入れたAnimationsフォルダを確認してほしい。

Animations→Game→Characters→Heroes→Mannequin→Animations→AimOffsetsのフォルダを開こう。

UE5のエイムオフセット

「mm pistol idle ads」のように検索する。

UE5のエイムオフセット

Ctrl+Aで全選択し、「アセットアクション」→「プロパティマトリクスで選択内容を編集します」のように選ぶ。

UE5のエイムオフセット

以下のような画面が出てくる。右にあるピン留め済み列のAdditiveSetttings(加算設定)を確認してほしい。

UE5のエイムオフセット

AdditiveSetttings settingの各項目を変更していく。

・AdditiveSetttings Anim Typeを「Mesh Space」に変更。

・Base Pose Type→「Selected animation frame」に変更

UE5のエイムオフセット

Base Pose Animationの以下のボタンを選択する。

UE5のエイムオフセット

「MM pistol idle ads ao」と検索。MM_Pistol_idle_ADS_AO_CCを選択する。

UE5のエイムオフセット

これで、選択した全てのアニメーションのAdditiveSetttingsの変更が完了した。

UE5のエイムオフセット

保存して閉じよう。

目次にもどる

エイムオフセットの作成

コンテンツフォルダの直下にあるAnimationsフォルダを開こう。

右クリック→アニメーション→アニメーションオフセット(英訳の人はAimOffsetsと出てると思う)のように選択する。

UE5のエイムオフセット

スケルトン選択画面が出るので、SK_Mannequinを選択する。

UE5のエイムオフセット

できたエイムオフセットのファイルにAO_Pistol_idle_ADSと名前をつける(AOはエイムオフセットの略)。

AO_Pistol_idle_ADSをダブルクリックして開く。

UE5のエイムオフセット

AO_Pistol_idle_ADSをダブルクリックして開き、アセット詳細タブを見よう。

水平軸についてNameをYaw、Minimum Axis Valueを-180、Maximum Axis Valueを180に設定し、Snap to Gridに✓を入れよう。

UE5のエイムオフセット

垂直軸についてNameをPitch、Minimum Axis Valueを-90、Maximum Axis Valueを90に設定し、Snap to Gridに✓を入れよう。

UE5のエイムオフセット

Snap to Gridにチェックを入れたのは、この後のアニメーション設置作業を楽にするため。Gridにアニメーションが飛ぶようになり設置しやすくなる。

YawやPitchがよくわからない場合は以下の記事を確認してほしい。

回転軸について

アセットプラウザで「MM pistol idle ads ao」と打って必要なアニメーションを検索する。

UE5のエイムオフセット

これらのアニメーションの名前の語尾に注目。aoの後の記述が銃を向ける方向を示している。

C=center、R=right、L=Left、B=back。

例えばCCとあればYawとPitchが両方ともセンター。LDであればYawは-90度(つまり左)、Pitchは-90度(つまり下)。LBDであればYawは-180度(つまり左回りの後ろ。)、Pitchは-90度(下)となる。

以上を考慮してアセットプラウザから各アニメーションをドラッグ&ドロップして以下のようにグラフに設置する。

UE5のエイムオフセット

アセット詳細タブの加算セッティング(英語の人はAdditive Setttingsになってると思う)をMM_Pistol_idle_ADSに変更しよう。

UE5のエイムオフセット

Ctrlを押しながらグラフ内を選択すると、ビューポートへその方向へブレンドされたアニメーションが表示されるのが確認できる。

UE5のエイムオフセット

保存してAO_Pistol_idle_ADSを閉じよう。

目次にもどる

エイムと移動のブレンド

エイムオフセットは移動しながらでも使えるようにする必要がある。

具体的にはエイムオフセットのアニメーションでキャラの上半身を動かしつつ、下半身は歩く・走るのアニメーションを行う必要がある。

銃の持ち方の記事で作成したABP_Playerを開き、AnimGraphを開く。

UE5のエイムオフセット

Main StatesのワイヤーをAlt+クリックで切断する。Main Statesからワイヤーを伸ばし「Save・・・」と検索し、「New Saved cash Pose」を選択する。

UE5のエイムオフセット

ノードの名前はMainsaveとする。これはMain Statesのアニメーションを保存するためのもの。

UE5のエイムオフセット

右クリックで検索し「mainsave」と打つと「Use cashed pose "Mainsave"」が出せる。コピーして貼り付けて2つにする。

右クリックで検索し「Layered」と打つと「Layered Blend per bone」が出せる。

最初からあったノードも合わせ、以下のようにつなげよう。

UE5のエイムオフセット

「Layered Blend per bone」のノードを選択して、右の詳細ビューを確認する。

コンフィグのLayer Setupの項目でインデックスの左にある三角マークを押し、Branch Filtersの右にある+マークを押し、その下のインデックスの左にある三角マークを押すと以下のようになる。

UE5のエイムオフセット

Bone Nameに骨の名前を入れることで、骨の上下でアニメーションをブレンドすることができる。

画面右上の以下のマークを押すことで、キャラの骨の画面が出る。

UE5のエイムオフセット

画面左に骨が表示されている。今回はSpine_03の名前を右クリック→コピーしよう。

UE5のエイムオフセット

先ほどの「Layered Blend per bone」の詳細ビューに戻り、Bone NameにSpine_03と貼り付ける。その下のMesh Space Rotation Blendに✓をつける。

UE5のエイムオフセット
目次にもどる

エイムオフセットを発動させる

引き続きABP_PlayerのAnimGraphで作業する。

アセットプラウザから先ほど制作したエイムオフセット「AO_Pistol_idle_ADS」をドラッグ&ドロップして配置し、Layered Blend per boneの後ろにワイヤーで接続する。

UE5のエイムオフセット

AO_Pistol_idle_ADSのYawとPitchの入力ピンからワイヤーを伸ばしPromote to Variableで出す。

UE5のエイムオフセット

AO_Pistol_idle_ADSのAlphaからワイヤーを伸ばしPromote to Variableで出す。AO_Pistol_idle_ADSの処理はAlphaに入力されたのが0だと一切行われず、1に近い値が入るほどブレンドされていく。作った変数名をAimingAlphaとする。徐々にエイム状態に切り替えるために使用していく。

UE5のエイムオフセット

ここでABP_PlayerのEventGraphに切り替え、先ほど作成したYawとPitchを出力するための処理を作っていく。

UE5のエイムオフセット

Sequenceで3つに分かれているノードがある。これは単に上の分岐から順に処理を実行していく整理に役立つノードである。

UE5のエイムオフセット

ピンを追加の横のボタンを押し、4つ目の出力ピンを作る。

UE5のエイムオフセット

マイブループリントタブから、Characterをドラッグ&ドロップして出す。

右クリックで検索し、Get Control Rotationを出す。

検索し、Get Actor Rotationを出す。

上の2つのノードのどちらからでもいいのでワイヤーを出し、検索してDeltaを出す。

以下のようにつなげる。

UE5のエイムオフセット

Get Control Rotationでカメラの向きを入力し、Get Actor Rotationでキャラの向きを入力し、それをDeltaで引き算して差を出すという処理。

GetでYawとPitchを出し、Make Rotatorのノードを出し以下のようにつなげる。

UE5のエイムオフセット

RInterp Toを出し以下のように先ほど作ったDeltaとMake Rotatorを以下のようにつなげる。

UE5のエイムオフセット

RInterp ToはTargetに向かってだんだんと値を変えていく。よくわからない場合は以下の記事を確認してほしい。

RInterp Toの使い方

Event BlueprintUpdateAnimation(アニメーションを定期的に更新するために最初から設置されている)を確認してほしい。

ここからDelta Time Xを取得可能。前フレームから現在フレームまでの時間を求められる(これを使わず速度の計算を行うと ゲーム上の速さがFPSに依存するようになってしまう)。ここからワイヤーを伸ばしPromote to Variableで値をSetしよう。変数名はDelta Time XのままでOKだ。

UE5のエイムオフセット

変数Delta Time XをGetして、先ほど作ったRInterp Toに入力する。

UE5のエイムオフセット

RInterp ToのInterp Speedを今回は10に設定する(ここに設定した速度で値を変えていく)。

カメラの向きからキャラの向きを引き算しその値をRInterp Toにいれることで、キャラがカメラの向いている方向へゆっくりと向く処理が作れる。

RInterp ToとReturn Valueの出力ピンを右クリックし、構造体ピンの分割を選択する。

UE5のエイムオフセット

YawとPitchの出力ピンからワイヤーを伸ばし、Clamp Angleを作成し、値は以下のように指定する。

UE5のエイムオフセット

Clamp Angleで向きの角度制限を行っている。Yawについては-110から110までの値に設定(キャラが左右に向ける角度の制限であるため、このくらいの数値が妥当)。Pitchは-90から90までの値に設定(キャラが上下に向ける角度の制限であるため、このくらいの数値が妥当)

SetでYawとPitchを出し、先ほど作ったSequenceの4つ目の出力ピンからワイヤーを出し、以下のようにつなげる。

UE5のエイムオフセット

SetのYawとPitchへ先ほど作成したClamp Angleの値を出力する。

UE5のエイムオフセット

Branchを作り、SetしたYawとPitchの先へつなげる。BranchのConditionの入力ピンからワイヤーを出しPromote to Variableし、Boolean型の変数Aimingを作成する。

先ほど作成したAimingAlphaをGetとSetで出す。GetしたAimingAlphaからワイヤーを伸ばしFInterp Toを検索して出す。

UE5のエイムオフセット

FInterp Toは先ほど使ったRInterp Toに似ており、だんだんとTargetの数値へなっていくノードだ。

FInterp ToのTargetには1を入力する。Delta Timeには変数Delta Time Xを入力する。interp Speedには10を入力する。以下のようにAimingAlphaのSetにつなげる。

UE5のエイムオフセット

FInterp Toとその入力とAimingAlphaのセットをまとめてコピー貼り付けでもう一つ作り、Targetを0にしたものを以下のようにつなげる。

UE5のエイムオフセット

これで変数AimingがTrueならゆっくりと滑らかにAimingAlphaが1に変わってきて、それがAnimGraphに配置した「AO_Pistol_idle_ADS」へ入力されるため、ゆっくりとエイムオフセットが発動する。変数Aimingがfalseであれば、ゆっくりとエイムオフセットが停止する。

今回はマウス右ボタンでエイムを行うことにする。よってマウス右ボタンを押すと変数AimingがTrueとなり、離すとfalseとなるように設定を行っていく。

インプットアクションファイルを作成(コンテンツブラウザのThirdPerson→inputフォルダで右クリックするのがおすすめ。その後に入力→入力アクションを選択)し、名前をIA_Aimとする。

UE5のエイムオフセット

IA_Aimを開き、「Value Type」の項目をDigital(bool)にする(トリガーされているかがTrue・falseで出力される)。Triggersの+マークを押す(NoneのままでOK)。

UE5のエイムオフセット

Enhanced Inputについて、よくわからない場合は以下の記事を確認してほしい。

キー入力のイベントの作り方

ThirdPerson→inputのフォルダにあるIMC_Defaultを開く。

UE5のエイムオフセット

先ほど作成したIA_Aimを追加し、マウスの右ボタンで作動するように設定し保存。

UE5のエイムオフセット

銃の持ち方の記事で作成したBP_Playerを開き、右クリック→「IA」程度まで検索するとIA_AIMが出てくる。

UE5のエイムオフセット

コンポーネントからMeshをドラッグ&ドロップして持ってくる。

Meshからワイヤーを伸ばし、検索で「Get Anim Instance」を出す。

Get Anim Instanceからワイヤーを出し、「Cast To ABP_Player」を出す。

UE5のエイムオフセット

ブループリントでは以上のような形でアニメーションブループリントにアクセスできるようにして、アニメーションを操作可能にするのが基本となるので覚えておこう。

「Cast to」がよくわからない場合は以下の記事を確認してほしい。

Cast Toのノードの使い方

「Cast To ABP_Player」をコピペして増やし、IA_AIMとつなげる。

両方の「Cast To ABP_Player」のAs ABP_Playerの出力ピンからワイヤーを伸ばし、検索してAimingのセットを出し以下のようにつなげる。IA_AIMのStarted後続のAimingセットには✓をつけてtrueになるようにする。

UE5のエイムオフセット

マウス右ボタンが押された際、Started(IA_AIMのファイルのTriggersがnoneのままの場合はキーが押された瞬間に後続処理を1回行う)の後の処理が1回行われ、Aimingがtrueになる。

マウス右ボタンから指が離された際、Completed(IA_AIMのファイルのTriggersがnoneのままの場合は押されたキーが離された瞬間に後続処理を1回行う)の後の処理が1回行われ、Aimingがfalseになる。

これでAimingのtrue・falseによってAimingAlphaの値がゆっくりと変化し、エイムオフセットが滑らかに働く処理が完成した。

再生しマウス右ボタンを押すと。エイムオフセットが発動しカメラの向いている方向にキャラが滑らかに向いているのが確認できる。


これでほぼ完成だが、エイムにして後ろに進むと変な移動になる。横に移動している時もエイムしているのなら横歩きしてほしい。

エイムしている時のみ、前を向いたまま後退&横移動ができるようにしていく。

ABP_PlayerのAnimGraphを開きLocomotion→Walk/Runと入っていく。

するとブレンドスペースの記事で作成したBS_MovePistolPlayerのノードがある。

入力のDirectionからワイヤーを伸ばしPromote to Variableし、Directionの変数を作成しつつGetする。

UE5のエイムオフセット

ABP_PlayerのEventGraphを開き検索してCalculate Directionのノードを出す。

Velocity(変数)をマイブルーポイントタブからドラッグ&ドロップして出す。

Character+Get Actor Rotationを出す(カメラとキャラの向きの差を求めたところからコピーしてくるとはやい)。

Set Directionを出す。

以下のようにつなげる。

UE5のエイムオフセット

Directionのセットを以前作成したSequenceの4つ目のルートで実行されるようにワイヤーでつなぐ。

UE5のエイムオフセット

これでキャラの向きがブレンドスペースに繁栄されるようになった。

BP_Playerを開き、コンポーネントでBP_Playerを選択して、右の詳細タブのキャラクタ移動(回転設定)のOrient Rotation to Movementを確認する(かなり下のほう)。

UE5のエイムオフセット

Orient Rotation to Movementにはデフォルトでは✓が入っている。この状態はプレイヤーが操作した移動方向にキャラが向く。

Orient Rotation to Movementのチェックを外すと左右や後ろに移動しても前方に向く。

よって、エイム時のみOrient Rotation to Movementのチェックを外してやればいい。

BP_Playerの先ほどAimingの変数をセットした場所を開き、以下のようにコンポーネントタブからCharacter Movementをドラッグ&ドロップして出し、そこからワイヤーを伸ばし検索してOrient Rotation to Movementのセットを出す。それらをコピーして2つにしてAimingセットの後ろにつなぎ、Aimingセットがfalseになるほうの後続のOrient Rotation to Movementのセットがtrueになるようにする。

UE5のエイムオフセット

これで完成だ。以下のような動きになる。


アンリアルエンジンの基本まとめへ戻る

page top