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を選びます。
これで銃を手にもった状態でスポーンしましたが、まだ何もできない状態です。