UE5でFPSゲーム制作 Part10-銃を作る②

とりあえず銃を持った状態になったので、銃の発射処理を作っていきます。

ブループリントインターフェース

キャラクターから武器へ発射した情報を通知するにはブループリントインターフェースを使用します。

ブループリントからブループリントインターフェースを選択し、BPI_Weaponと名付けます。(公式の命名規則だとBI_〇〇なんですが、個人的に覚えにくくてBPI_にしてます)

新規関数を追加し、SendFireと名付けます。今回は特にパラメーターを必要としないのでこれで終わりです。

BP_PlayerCharacterとBP_Weaponを開いてクラス設定から継承インターフェースにBPI_Weaponを追加します。

 

処理を書いていく前にC++よりWeaponBase.hにFullAutoかどうかのフラグを追加しておきます。

WeaponBase.cppにbIsFullAuto = true;を追加します。

 

まずはEnhancedInputから新しい入力アクションをDigital(bool)で追加し、IA_LeftActionと名付けます。IMC_FPSに登録します。Triggersを2つ追加し、PulseとReleasedにします。

Trigger:Pulseにすることで長押し中、毎Tick処理を繰り返すことができ、連射処理が楽になります。

BP_PlayerCharacter

GASについては今度説明するので、今回は省略します。インプットアクションをPulseに設定した場合、最初にStartedから一度だけ処理が流れ、その後Ongoingから毎Tick処理が流れます。

Current Weapon変数からブループリントインターフェースを通してBP_Weaponにメッセージを飛ばします。

BP_WeaponBase

WeaponBaseのイベントSendFireノードからFire関数を呼び出します。前回FIre関数にはTimer関数を入れているので、Full AutoがTrueならFire Rate変数の時間後に再度呼ばれます。

 

Fire関数内にあるFire Action関数はUFUNCTION(BlueprintImplementableEvent)になっています。Blueprint Implementable EventはC++内での実装を持たず、BP内で記述します。

これで銃の発射処理は完成です。