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

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

【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の設定

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

長々と呼んでいただきありがとうございます。

【UE4】ChaosでのGeometryCollectionDebugDrawを使ってみる

新年あけましておめでとうございます(*'▽')

今回は前回のChaosフィールドの説明の際に使っていた

GeometryCollectionDebugDrawの紹介になります。

※フィールドの説明はこちら

argonauts.hatenablog.jp

UE4.26Chaosを使用しています。

※間違いやミスなどがあるかもしれないのでご注意ください。

GeometryCollectionDebugDrawを追加する。

まずはGeometryCollectionDebugを追加します。

コンテンツブラウザで右クリックしてブループリントを選択します。

ブループリントの選択

ブループリントを選択したらすべてのクラスから、

「debug」で検索するとGeometryCollectionDebugDrawActorがあるので、

こちらを選択して作成します。

GeometoryCollectionDebugDrawの追加

GeometryCollectionDebugDrawの追加

これでGeometryCollectionDebugDrawActorの追加は完了します。

続いて設定による表示について説明したいと思います。

GeometryCollectionDebugDrawで表示を行う。

ここからは実際にデバッグの表示を行っていきます。

まず先ほど作成したGeometryCollectionDebugDrawをレベル上に配置します。

レベル上に配置

レベル上に配置

レベル上に配置したらあとは詳細で表示したい情報を選択すればOKです。

実際によく使っていたものをまとめました。

DebugDrawの良く使う表示項目

DebugDrawの良く使う表示項目

実際にチェックを入れて結果を見てみましょう。

今回はわかりやすいジオメトリの番号とジオメトリの外接矩形、

面の表示と面の向きを表示してみます。

DebugDrawのGeometoryの表示項目の選択

DebugDrawのGeometoryの表示項目の選択

実際に表示すると薄い紫いろで番号や面の上の方に矢印が表示されます。

実際のDebugDrawの表示

実際のDebugDrawの表示

以上でDebugDrawの説明は終了になります。

今年も気になった情報をブログに書いていこうと思いますので、

よろしくお願いいたします。