武器を装備している時に、新しい武器を装備しようとすると、現状のままだとおかしなことになってしまいます。なので、武器を新たに装備する場合、手持ちの武器を投げ捨ててから新しい武器を装備するスワップ関数を作成する必要があります。実際には、新しい武器をスロットに追加するメカニズムがあると良いのですが、今回は、単純な武器のスワップメカニズムにしておきたいと思います。
スポンサーリンク
SwapWeapon関数の作成
スワップメカニズムとしては、新しい武器を装備する前に、先ず、手持ちの武器を投げ捨てて武器の未装備状態を作り出す必要があります。その後、新しい武器を装備するという順序になります。MyCharacter.hのprotectedエリアにSwapWeapon関数を宣言します。
void SwapWeapon(AWeapon* WeaponToSwap);
MyCharacter.cppにSwapWeapon関数の定義を記述します。
void AMyCharacter::SwapWeapon(AWeapon* WeaponToSwap) { DropWeapon(); EquipWeapon(WeaponToSwap); }
武器を捨ててから新たな武器を装備するという形になっています。
スポンサーリンク
Equipping関数の書き換え
武器の装備状態の確認はEquipping関数で行います。武器の未装備状態と装備状態で条件を分岐させます。MyCharacter.cppのEquipping関数を以下のように書き換えることでこのことを達成できます。
void AMyCharacter::Equipping() { if (EquippedWeapon == nullptr) { if (OverlappingItem) { AWeapon* Weapon = Cast<AWeapon>(OverlappingItem); if (Weapon) { EquipWeapon(Weapon); SetOverlappingItem(nullptr); } } } else { if (OverlappingItem) { AWeapon* Weapon = Cast<AWeapon>(OverlappingItem); if (Weapon) { SwapWeapon(Weapon); SetOverlappingItem(nullptr); } } } }
Xボタンを押した時に、武器を未装備状態の場合は従来通りEquipWeapon関数を呼び出し、武器を装備時にはSwapWeapon関数を呼び出します。Yボタンを押せば装備している武器を投げ捨てられる部分に変更はありません。
スポンサーリンク
スポンサーリンク
コメント