UE5でFPSゲーム制作 Part14-武器の持ち替え

BP_WeaponBaseを継承して子BPを作ります。すべての銃はこのBP_WeaponBaseを継承しており、基本的にステータスをいじるだけで武器の種類を増やすことができます。

武器の持ち替え

2つ以上の武器を装備している時、キーボードの1、2番やホイールで変更できるようにしていきます。

入力アクションからIA_SwapWeapon_0、IA_SwapWeapon_1、IA_SwapWeaponWheelを作成します。Value TypeはIA_SwapWeapon_0、IA_SwapWeapon_1はDigital(bool)、IA_SwapWeaponWheelはAxis1D(float)に設定します。

IMC_FPSにキーボード1番、2番、マウスホイール軸に設定します。IA_SwapWeaponWheelはModifiersをNagateにします。

BP_PlayerCharacterにWeaponBase型のInventoryWeapon_0とInventoryWeapon_1を作成します。Int型のCurrentWeaponIndexを作成します。

 

PlayerCharacter.hに

UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, Category = "Action")

void SwapWeapon(int Value);

を追加します。

 

新しいGameplay Abilityを作成し、GA_SwapWeapon_Slot1と名付けます。

GA_SwapWeapon_Slot1

Ability TagとActivation Owned TagsはAbility.Action.Swapと設定します。

やっていることはアニメーションモンタージュを使用して、モンタージュ終了時にPlatyer CharacterのSwapWeapon関数を呼び出すだけです。

Swap Weapon関数のValueは0にします。これと同じものをGA_SwapWeapon_Slot2と名付けてもう一つ用意します。こちらはSwap Weapon関数のValueを1にします。

 

BP_PlayerCharacter

現在の武器であるCurrent WeaponとInventory Weaponが同じかどうかを判断して、違っていたらカスタムイベントからGameplay Abilityが呼ばれます。

武器の持ち替えに成功したら、Current Weaponをもう片方の武器に設定し、表示非表示を変更しています。

 

BeginPlayから銃を生成していた部分に新たにInventoryWeaponをセットし、2本目の武器は非表示にしておきます。

 

これで武器の持ち替えができるようになりました。