任意のコントローラーボタンを押すとキャラクターが装備しているライフル銃をエイムするようにします。例えば、何かを撃ちたい時にそのボタンを押すことで、目標物を的確に捉えて射撃精度を向上させることができるようになります。狙撃のような感じです。
エイムアニメーションを追加する
アニムインスタンスブループリントを開いてアニムグラフのスロットattackピンを引っ張り出して検索窓にcacと入力して新規保存のキャッシュされたポーズを選択します。
名前はここではLocoAttackにしています。
エディタ内で右クリックして検索窓にchachedと入力してさっき保存したポーズを呼び出します。
エディタ内で右クリックして検索窓にstatemと入力して新規のステートマシンを選択、名前はAimingにします。
ステートマシンをダブルクリック、アセットタブを押して検索窓にaimと入力、エイムアニメーションをエディタ内に引っ張り出します。
Aimingアニメーションの詳細タブにあるLoop Animationのチェックを外します。
Entryとエイムアニメーションを接続します。
LocoAttackの出力ピンを引っ張り出して検索窓にlayerと入力してボーン毎のというノードを選択します。
Aimingをブレンドポーズ0につなぎます。
Layer SetupのBranch Filtersの+を押してエレメントを追加します。
Branch Filtersの0を開きます。
Bone NameにSpine2を設定します。
C++でエイミング関連の関数を作成する
MyAnimInstance.hのprivateセクションにブール型変数を宣言します。
private: UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Movement, meta = (AllowPrivateAccess = "true")) bool bAiming;
MyCharacter.hのprivateセクションにいくつか変数を宣言します。
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Combat, meta = (AllowPrivateAccess = "true")) bool bAiming; bool bAimingButtonPressed;
MyCharacter.hのpublicセクションに変数のgetterを作成します。
FORCEINLINE bool GetAiming() const { return bAiming; }
コメント