Aim Offset を作成する

Aim Offset を使用して、キャラクターはマウスまたはコントローラの方向で武器の照準を合わせるようにします。

Choose your operating system:

Windows

macOS

Linux

このガイドでは Aim Offset を作成します。これは、キャラクターが武器の照準を合わせるようにするブレンド可能な一連のポーズを格納するアセットです。アニメーション シーケンスを使って、Aim Offset 用に利用可能なポーズに分けます。プレイヤーのマウスの pitch/yaw の位置を取得し、それを使ってどのブレンドされたポーズを使用するかを決めて、以下の例のようにマウスの位置でキャラクターが移動し、照準を合わせるようにします (一部制約有り)。

以下の手順を終えると、上の図と同じようなキャラクターを作成することができます。

1 - 照準ポーズを作成する

このステップではデフォルトのプレイ可能なキャラクターを更新し、Aim Offset に必要な全ポーズを作成します。

このガイドでは Blueprint Third Person プロジェクトを使用し、 Animation Starter Pack をプロジェクトに追加しました。

AnimationAssetPack.png

Epic Launcher の Marketplace から無料でアニメーション スターター パックをダウンロードできます。

手順

  1. コンテンツ ブラウザ の「 Content/ThirdPersonBP/Blueprints 」フォルダで ThirdPersonGameMode を開きます。

  2. Default Pawn Class (デフォルトのポーン クラス) で、ドロップダウン メニュー > 「Ue4ASP_Character」 > [Save (保存) を選択し、ブループリントを閉じます。

    Animations1.png

    デフォルトのプレイ可能なキャラクターが、Animation Starter Pack で提供されるものを使用するように変更しています。

  3. コンテンツ ブラウザ で、 Content の AnimStarterPack フォルダを開きます。 [Add New] をクリックして、 「AimPoses」 というフォルダを作成します。

    AimOffset1.png

  4. Aim_Space_Hip アセットを 「AimPoses」 フォルダにドラッグし、 Copy を選択します。

    AimOffset2.png

    これは武器の照準を合わせるための一定範囲の動きを含むアニメーション シーケンスであり、これをポーズに分けます。

  5. 「AimPoses」 フォルダ内で、 Aim_Space_Hip を選択した状態で Ctrl+W を押して複製し、 Aim_Center と名前を付けます。

    AimOffset3.png

  6. Aim_Center アセットを開き、再生コントロールの中から [Pause (一時停止)] ボタンをクリックし、続いて [ToFront (前へ)] ボタンをクリックします。

    AimOffset4.png

  7. タイムラインのスクラブバーで 右クリック し、 [Remove from frame 1 to frame 87] オプションを選択します。

    AimOffset5.png

    この状態で、Aim Offset で使用可能なポーズを含むひとつのフレームが存在します。

  8. 「AimPoses」 フォルダ内で、 Aim_Space_Hip を選択した状態で Ctrl+W を押して複製し、 「Aim_Center_Down」 と名前を付けます。

  9. Aim_Center_Down を開いて、フレーム 0 になるようにし、 [ToNext] ボタンをクリックし、フレーム 20 に進みます。

    AimOffset9.png

    これでキャラクターがビューポートで下方向に照準を合わせます。これは、下方に照準を合わせるために使用するポーズです。

  10. 1.タイムラインのスクラブバーで 右クリック し、 [Remove frame 0 to frame 20] オプションを選択します。

    AimOffset10.png

    スクラブバーのどこを 右クリック するかに応じてフレームの範囲は 1、2 フレーム程度変わりますが、キャラクターが下方に照準を合わせるようにしてください。

  11. タイムラインのスクラブバーで再度 右クリック し、 [Remove from frame 1 to frame 68] オプションを選択します。

    AimOffset11.png

  12. 「AimPoses」 フォルダ内で、 Aim_Space_Hip を選択した状態で Ctrl+W を押して複製し、 「Aim_Center_Up」 と名前を付けます。

  13. Aim_Center_Down を開いて、フレーム 0 になるようにし、 [ToNext] ボタンをクリックし、フレーム 10 に進みます。

  14. 1.タイムラインのスクラブバーで 右クリック し、 [Remove frame 0 to frame 10] オプションを選択します。

    AimOffset14.png

  15. タイムラインのスクラブバーで再度 右クリック し、 [Remove from frame 1 to frame 78] オプションを選択します。

    AimOffset15.png

  16. Aim_Space_Hip アセットを毎回 複製 し、以下の表に基づき残りの各ポーズを作成します。

    Anim Name

    Start At Keyframe

    Remove Frames 1

    Remove Frames 2

    Aim_Left_Center

    30

    0 - 30

    1 - 57

    Aim_Left_Up

    40

    0 - 40

    1 - 48

    Aim_Left_Down

    50

    0 - 50

    1 - 37

    Aim_Right_Center

    60

    0 - 60

    1 - 27

    Aim_Right_Up

    70

    0 - 70

    1 - 17

    Aim_Right_Down

    80

    0 - 80

    1 - 8

    各アニメーションについてここで提示した Start At Keyframe フレームから開始し、スクラブバー上で 右クリック し、 Remove Frames 1 を、再度スクラブバー上で 右クリック し、 Remove Frames 2 を選びます。各アニメーションは、対応する名前の方向にキャラクターが照準を合わせた単一フレームになるはずです。各アニメーションを作成すると、 「AimPoses」 フォルダには各照準方向のポーズが入っているはずです。

    AimOffset17.png

  17. コンテンツ ブラウザ Shift キーを押しながら、それぞれの照準ポーズを選択します。

    AimOffset18.png

  18. 右クリック し、 [Asset Actions] [Bulk Edit via Property Matrix] オプションを選択します。

    AimOffset19.png

  19. [Property Matrix] [Additive Settings] で、 [Additive Anim Type] [Mesh Space] に変更します。

    AimOffset20.png

    アニメーションが Aim Offset と互換性があるようにするには、必ず Mesh Space の Additive Anim Type を使用するように設定しなければなりません。

  20. [Base Pose Type] [Selected animation frame] に変更します。次に [Base Pose Animation] でアセット選択アイコンをクリックし、 [Idle_Rifle_Hip] を選択します。

    add_01.png

    [Base Pose Type] は、加算デルタの計算方法を決めます。

  21. 上記を行ったら コンテンツ ブラウザ に戻り、 [Save All (全てを保存)] ボタンをクリックします。

    AimOffset22.png

各ポーズを作成したので、次のステップで Aim Offsetを作成します。

2 - Aim Offset を作成する

各照準ポーズを使って、各ポーズ間でブレンドする Aim Offset を作成します。

手順

  1. 「Content/AnimStarterPack/UE4_Mannequin/Mesh」 フォルダで UE4_Mannequin 右クリック [Create Aim Offset (Aim Offset を作成)] を選択します。

    AimOffset23.png

    このスケルトンに基づき Aim Offset が作成されます。

  2. [Aim Offset] ウィンドウ (中央ウィンドウ) の [Parameters] で以下のパラメータを入力します。

    AimOffset26.png

    X Axis Label Yaw(左右回転) に、 Y Axis Label Pitch(上下動) に設定します。次に両方の Axis Ranges を -90 から 90 に設定し、 [Apply Parameter Changes (パラメータ変更を適用)] をクリックします。

    Aim Offsets は、 ブレンドスペース と同じように機能し、パラメータに基づきポーズ間でブレンドすることができます。

  3. アセット ブラウザ Aim を検索し、 Aim_Center アニメーションを以下の画面のようにグラフの中央部にドラッグします。

    AimOffset27.png

  4. 以下のように Aim_Center_Up を位置 1 に、 Aim_Center_Down を位置 2 にドラッグします。

    AimOffset28.png

    オプションで、 Enable Tooltip Display オプションのチェックを外してツールチップを非表示にすることができます。

  5. 以下のように Aim_Left_Center を位置 1 に、 Aim_Right_Center を位置 2 にドラッグします。

    AimOffset29.png

  6. Aim_Left_Up (1)、 Aim_Right_Up (2)、 Aim_Left_Down (3) および Aim_Right_Down (4) のポーズを追加して Aim Offset を終了します。

    AimOffset30.png

  7. [Asset Details] パネルで [Preview Base Pose] オプションの [Additive Settings] Idle_Rifle_Hip に設定します。

    Add01.png

    グリッド内でマウスを動かすとポーズのブレンドをプレビューすることができます。マウスの位置に応じてビューポートのメッシュがそのポーズを更新します。

これで Aim Offset がセットアップされました。次のステップでは、 Animation ブループリント 内で使用するためにこれを接続し、ゲームプレイでブレンドできるようにします。

3 - Aim Offset を実装する

Aim Offset を Animation ブループリントに追加し、それを既存の Anim Graph に接続します。

手順

  1. 「Content/AnimStarterPack」 フォルダで UE4ASP_HeroTPP_AnimBlueprint を開いて、 MyBlueprint パネルで AnimGraph ダブルクリック します。

    step3_01.png

  2. アセット ブラウザ タブから Aim Offset アセットをドラッグします。

    step3_02.png

  3. 以下のように Aim Offset を接続します。次に Yaw ピンと Pitch ピンの上で 右クリック し、 [Promote to Variable (変数に昇格)] にして、 Aim Yaw Aim Pitch という名前を付けます。

    step3_03.png

    この 2 つの変数はプレイヤーがマウスを使って照準を合わせるときに使用されて、Aim Offset のポーズを操作します。

  4. [MyBlueprint] パネルで EventGraph にジャンプします。

    step3_04.png

  5. EventGraph でスクリプトの Movement 部分内にある Sequence ノードを探します。

    step3_05.png

    Sequence ノード上の [Add pin] ボタンをクリックします。

    step3_05b.png

  6. [MyBlueprint] パネルで [Alt] キーを押したまま、 Aim Yaw Aim Pitch をドラッグして Sequence ノードに接続します。

    step3_06.png

  7. Cast To Ue4ASP_Character ノードからドラッグして Get Control Rotation ノードと Get Actor Rotation ノードを追加します。

    step3_07.png

  8. Get Control Rotation ノードからドラッグして、 Delta(Rotator) ノードを追加します。

    step3_08.png

  9. Get Actor Rotation Delta(Rotator) B Pin に接続します。次に、 Return Value から RInterp To ノードを追加します (Current から Targetへの接続をスワップします)。

    step3_09.png

    Ctrl キーを押したまま、 Current ピン上で左クリックし、その接続を Target ピンまでドラッグします。

  10. RInterp To ノードの Current ピンをドラッグして、 Make Rotator を選択します。

    step3_10.png

  11. [MyBlueprint] パネルで [Ctrl] キーを押したまま、 Aim Pitch 変数と Aim Yaw 変数をドラッグして Make Rotator ノードの Pitch Yaw に接続します。

    step3_11.png

  12. Movement スクリプトの開始時に、 Event Blueprint Update Animation ノードを探して、 Delta Time X Time と呼ばれる変数に昇格し、以下のように接続します。

    step3_12.png

  13. RInterp To ノードに戻り、新しい Time 変数を接続し、 Interp Speed 15 に設定します。

    step3_13.png

    キャラクターの回転とプレイヤーの入力の回転を使用して新規ローテーターを作ります。これは、キャラクターがある方向にどの程度曲がることができるかを制限します。

  14. RInterp To ノードから Break Rotator Pitch Yaw Clamp Angle を追加します。最小角度と最大角度はそれぞれ -90 90 に設定します。

    step3_14.png

  15. Pitch から Clamp Angle Aim Pitch に接続し、 Yaw から Aim Yaw に接続します。

    step3_15.png

    Aim Offset を操作する Aim Yaw の値と Aim Pitch の値は、キャラクターの回転、プレイヤーの現在のコントローラーの回転を考慮し、キャラクターが一方向に回転しすぎないようにクランプされます。角度をクランプしないとキャラクターが後ろを向いているのにその足は前を向き、逆方向をポイントしてしまいますが、これは避けたいでしょう。

セットアップがほぼ終わったので、次のステップではすべてをつなげて、キャラクターの照準機能をテストします。

4 - 仕上げ

Character ブループリントを更新し、コントローラーの回転を処理する方法を変更したり、テスト前に簡単な問題に対処します。

手順

  1. 「Content/AnimStarterPack」 フォルダで、 Ue4ASP_Character ブループリントを開きます。

  2. [Components] ウィンドウで Ue4ASP_Character をクリックし、 [Details (詳細)] [Use Controller Rotation Yaw] のチェックを外します。

    step4_04.png

    その結果、キャラクターが自動的にコントローラの yaw の位置に向くのを防ぎます。

  3. [Components] ウィンドウで [CapsuleComponent] をクリックします。次に [Details (詳細)] パネルの [Hidden in Game (ゲーム内で非表示)] オプションにチェックを入れます。

    HideCapsule.png

    これでゲームプレイ中にデバッグのコリジョン表示が非表示になります。

  4. MyBlueprint [EventGraph] をクリックします。次に Crouching セクションを見つけて、 InputAction Crouch ノードを C Key Event に置き換えます。

    step4_05.png

    これでウィンドウの左上隅にあるコンパイル ボタン上の黄色の警告記号が取り除かれます。プロジェクトはデフォルトでAction Mapping for Crouch (しゃがむためのアクション マッピング) をもっていないため、しゃがむために C ボタンを使用します (必要に応じてこれに対してどの Key Event でも使用可能)。

  5. コンパイル 保存 してから、ブループリントを閉じます。

  6. レベルから ThirdPersonCharacter を取り除きます。

    DeleteCharacter.png

    これでレベル内に配置されているものではなく、Game Mode で割り当てたキャラクターを使用するようになります。

  7. Play ボタンをクリックしてエディタで再生します。

最終結果

エディタでプレイする場合、キャラクターは静止状態で照準を合わせ、マウスの動きに反応し、マウスの方向を指し示します。マウスがキャラクターの背後にある場合、およびキャラクターが走っている間、キャラクターが後ろを向かないようにいくつかの制約があり、マウスを動かすとキャラクターの胴体もポイントしている方向に向きます。

これをさらに進めて、キャラクターがある方向に照準を合わせ、その方向に射撃アニメーションを再生したり、キャラクターがある方向を向いて移動またはしゃがんでいる間に射撃アニメーションを再生することができます。詳細は、操作ガイド「 既存アニメーションにレイヤー化されたアニメーションを使用する 」を参照してください。または、「 スケルタルメッシュのソケット 」ではキャラクターの手に武器をアタッチする例を確認することもできます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる