UE5でFPSゲーム制作 Part2-基底クラスの作成

BPによる参照のデメリットについて

BPによる参照は依存アセットも一緒にロードしてくれる非常に便利な機能を持っていますが、大量のBPクラスでお互いがお互いを参照するような不適切な参照はエディタのロード時間とメモリ使用量に深刻な影響を与えます。

(自分も初心者なので詳しく説明できません。参考になるサイトやブログはたくさんあるので調べてください)

 

自分のような個人で開発しているレベルであればあまり意識しなくてもいいのかもしれませんが、簡単にできる部分ならやって損はないと思います。

基底クラス

C++で作成されたクラスはBPクラスで参照しても、参照連鎖が起きないので、アクセスすることが多い基底クラスはC++で作成しておきます。また、後で使用するGameplayAbilitySystemもC++で実装する必要があるので、Characterクラスはベース部分もC++で作る必要があります。

新規C++クラスからGameModeBaseクラスを選択して作成します。

といっても、中身は何もありません。

同じように新規C++クラスからPlayerControllerクラスを選択して作っておきます。

こちらも中身は何もありません。

 

 

最後にCharacterクラスですが、プレイヤーが動かすキャラクターも敵キャラクターも移動速度や体力などのステータスは共通して使用すると思います。なので基底Characterクラス→敵キャラクターと味方キャラクターのクラス→味方キャラクターの中にプレイヤーキャラクターのクラスという階層分けを行っておきます。

 

新規C++クラスからCharacterクラスを選びCharacterBaseと名前を付けます。中身は今はありません。ここからCharacterBaseクラスを継承したEnemyCharacterクラスとFriendCharacterクラス。FriendCharacterクラスを継承したPlayerCharacterクラスを作成します。

EnemyCharacterクラスとFriendCharacterクラスは親がCharacterBase、PlayerCharacterクラスは親がFriendCharacterクラスになっていると思います。

こんな感じでたくさんのキャラクタークラスができました。今後プレイヤーと、銃を持った味方と敵を作ろうと思ったのでこういった階層分けになりました。

 

このあたりはゲームによって違ってくるので自分がどんなゲームを作ろうとしているのかのイメージが大事なのかなと思います。

プレイヤーにはカメラとFPS用の腕を実装します。

PlayerCharacter.h

PlayerCharacter.cpp

UCameraComponent* FirstPersonCameraComponent はカメラ。

USkeletalMeshComponent* Mesh1PはFPS用の腕のために実装します。

次は作ったプレイヤーキャラクターを動かしていきます。