アルゴンUE4/UE5&アプリ開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE4】武器を拾う動作とアタッチするまでの流れ

武器を拾ってみよう!

今回はアニメーションBPとキャラの動作を改良して、

装備をAttachするところまでやってみたいと思います。

実際に動作させる物はこちらです。

UE4.26.1を使用しています。

※事前準備としてサードパーソンプロジェクトを作成する必要があります。

※これだけが正解ではなくもっと良い方法もあると思いますので、

 ぜひ試行錯誤をして楽しく作ってみてください(・ω・)

キャラクターBPに必要な変数を追加

まずThirdPersonCaracterで拾っている最中かのフラグを作ります。

ThirdPersonCaracterのブループリントを開いて、

isPickupというboolの変数を追加します。

※変数の追加は変数横の+ボタンで追加が行えます。

ThirdPersonCaracterの変数追加

ThirdPersonCharacterの設定は今回この変数のみです。

続いてアニメグラフとアニメーションBPの設定を行います。

アニメグラフの編集とアニメーションBP編集

操作しているTPSキャラクターの、

ThirdPerson_AnimBPにステートを追加します。

右クリックでステートの追加を行います。

Pickupのステートを追加

拾うアニメーションをPickupのステートで再生するようにします。

※ThirdPerson_PickupItemは下のリンクのアニメーションファイルの事です。

 こちらを使用する際はプロジェクトにインポートしてください。

ステートのアニメーション再生

アニメーションは下記のリンクにfbx形式で置いてあります。

fire.st

※アニメーションはコントロールリグのプロジェクトで作ったので、

 自作したい人はこちら。

www.unrealengine.com

アニメーションの追加が完了したら

右上のアニメーションを選択して通知を追加します。

アニメーションタブの選択

通知の追加

今回はPlayerで設定していたThirdPersonCharacterの、

IsPickupの状態を見てアニメーションをするようにしているので、

PlayCharacterという変数で状態を保持しておきます。

PlayCharacterの変数追加

そのPlayCharacterから先ほど追加したIsPickupの変数を元に切り替えます。

矢印のそれぞれの方向にアニメーションに移行する条件を書きます。

状態の切り替え

PlayCharacterの中にあるisPickupを元に状態を切り替えます。

アニメーションを再生するときの条件

アニメーションを停止するときの条件

あとはイベントグラフの方で下記の二つの処理を作ります。

・プレイヤー情報を更新する。

・拾うアニメーションが終了時に通知でisPickupをFalseにする。

PlayCharacterの情報の更新

拾うアニメーション完了時の通知処理

アニメーション処理の箇所の説明は完了になります。

続いては拾うためのアイテムの処理・ソケットを作ります。

ソケットの設定

まずアイテムをアタッチするためのソケットを作成します。

ThirdPerson_AnimBPのスケルトンタブを選択します。

スケルトンタブの選択

左側のスケルトンツリーから、lowerarm_rを選択してソケットを追加します。

スケルタルメッシュのlowerarm_r(右腕の前腕側)のボーンから作成します。

ソケットの追加

ソケットの追加が完了したら、

位置や角度などを微調整します。

位置:X→-13 Y→0.0 Z→-6.8

角度:X→-100 Y→83 Z→0

ソケットの追加と角度の設定

 ソケットの設定は上記で完了です。

アイテムブループリントの作成

拾うアイテムブループリントを作成します。

BP_Itemというコンポーネント用のブループリントを作成します。

作成したらアイテム(StaticMesh)と拾う範囲を決めるトリガーを作成します。

各種コンポーネントの設定

StaticMeshの方ではキャラクターとカメラに当たらないように、

PawnとCameraのコリジョンをオーバーラップにしておきます。

StaticMeshの当たり判定

実際にイベントグラフの方でプログラムを作成していこうと思います。

まずインプットできるようにBeginPlayで入力を受け付けるようにします。

インプットの許可

続いてGate関数を用いてプレイヤーが接触した時だけ拾うようにします。

オーバーラップ開始時にOpenにして、

オーバーラップ終了時にクローズするようにしています。

拾おうとした時のGateの動作

Exitが実行された際にアニメーションを行うIsPickupフラグをONにして、

拾うタイミングでキャラクターのメッシュにアタッチします。

AttachActorToComponentのルールはどれも「Snap To Target」にしています。

武器のアタッチとアニメーション動作

最後にSphereCollisionを削除します。

SphereCollisionの削除

これでアイテムブループリントの動作は完了になります。

実際に配置してちゃんと拾えるか確認してみてください。

マップに配置した場合

最後に・・・・

今回アニメーションブループリントを使用しましたが、

PlayAnimationで実装することも可能です。

PlayAnimationの設定

もっと簡単な方法もあるかと思うのでぜひいろいろ試してみてください!

長々と記事を読んでいただきありがとうございます。