UE5でFPSゲーム制作 Part9-銃を作る①

武器はどんなシステムを作るかに非常に影響されるので、ある程度のコンセプトを先に決めておくと作りやすくなります。

銃の作成

まずはC++で基底クラスを作ります。Actorクラスを選択しWeaponBaseと名付けます。

WeaponBase.h

USkeletalMeshComponent* Mesh:銃のモデル

USoundBase* FireSound:発砲音

FVector MuzzleOffset:銃口の位置

大量のセッターゲッターは武器のステータス

WeaponBase.cpp

PrimaryActorTick.bCanEverTick = false;

PrimaryActorTick.bStartWithTickEnabled = false;

武器でTick処理は使わない予定なので、最初からC++でオフにしておきます。

Fire関数ではbCanFIreがTrueならFire Action関数とFire Effect関数が処理され、弾数を減らした後に、Delay関数を使ってFire Rateの時間後に再度処理が走るようにしています。

 

新規ブループリント作成からWeaponBaseを継承してBP_WeaponBaseを作っておきます。MeshにFPSアセットにデフォルトで入っているSK_FPGunを割り当てます。

 

武器を持たせる

武器を持たせる方法はいろいろあります。今回はシンプルにキャラクターから生成して持たせます。

まずはBP_PlayerCharacterでWeapon Baseを型にした変数を作成します。Current Weaponと名付けます。

Begin Playからアクターを生成でBP_WeaponBaseを生成し、Attach Actor to Componentで手のGrip Pointにスナップします。

 

BP_PlayerCharacterのMesh1PのスケルタルメッシュにデフォルトのSK_Mannequin_Armsを設定します。AnimationはUse Animation AssetにしてFP_Rifle_Idleを選びます。

 

これで銃を手にもった状態でスポーンしましたが、まだ何もできない状態です。