UE5でFPSゲーム制作 Part16-武器を拾う②

前回、インターフェースを通してBP_WeaponBaseのPickup Weapon関数とPickup Inventory関数で銃の所持者であるAs Player Character変数を登録できるようにしました。

Part12-銃を作る③の最後で、銃の所持者をBegin Playで登録していましたが、BPI_Weaponを通して行うことができるようになったのでBegin Playの部分はすべて削除します。

武器を拾う

入力アクションからIA_InteractをDigital(bool)で作成します。IMC_FPSでキーボードのFに割り当てます。TriggersはPressedです。

BP_PlayerCharacter

前回視線の先にあるオブジェクトを認識できるようになったので、Hit Itemが存在するならアイテムを判断して取得します。Cast to WeaponBaseは右クリックから純粋キャストに変換します。

Inventory Weapon_0がIs Not Validなら武器を拾ってCurrent Weaponに設定し、Hit Itemをなくします。

Inventory Weapon_0があってInventory Weapon_1がないとき(武器が1本しかないとき)は2本目の武器として拾い、インベントリへ格納します。

武器が2本ともある時には、手持ちの武器を捨てて、武器を拾います。Detach From ActorはソケットにアタッチされているActorを外すことができます。Keep Worldにしておかないと、足元にドロップされません。

落とした武器はインターフェースを通してBP_Weaponのコリジョンを戻します。

武器を捨てたら、Hit Itemを手持ちの武器としてCurrent Weaponに登録しアタッチします。

 

これで武器を拾って交換することができるようになりました。