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内で記述します。
これで銃の発射処理は完成です。