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本目の武器は非表示にしておきます。
これで武器の持ち替えができるようになりました。