UE4ゲーム制作入門十二日目

一人UE4ゲーム制作入門アドベントカレンダー十二日目です。

二日に渡る関西UE4ゲームジャムお疲れ様でした。色々と学ぶものと反省点が多かったですが、とても楽しかったです。一緒に組んだEチームの皆さんありがとうございました。

今日は、他の種類の敵を作るために敵のベースクラスを作ります。

BP_Enemyをベースクラスとする


まず、今まで作っていたBP_Enemyのコピーを取ります。

複製したクマBP_EnemyをBP_Bearに名前を、親クラスをBP_Enemyに変更しましょう。その際、継承した先に同じ変数や関数があるために、後ろに数字の付いた名前になったり、エラーをはいたりすると思うので、全部消します。

しかし、継承した変数が見えないのは利用しづらいので、表示するように変更します。

継承した変数を表示

また、後述しますが、親クラスには子クラスで別々の処理をさせたい場合、関数の宣言だけをしておくことになります。その実装をするには、このオーバーライドというのを選ぶと、基本的にはイベントノードがイベントグラフに、返り値があればFunctionsのところに追加されます。

オーバーライド

BP_BearではDestroyFuncとAttackをオーバーライドして実装します。

中身はコピペなので、BP_Enemyから持ってきてください。

BP_Bearのオーバーライド死亡

BP_Bearのオーバーライド攻撃

親クラスである、BP_Enemyでは先程行ったとおり、中身を空っぽ同然のものにします。Meshコンポーネントのメッシュ、関数のAttack、DestroyFuncの中身を全部まっさらにして、関数は宣言だけした状態にしておきます。小クラスとなった各敵ごとに実装していくことになります。

BP_Enemyのイベントグラフ

BP_EnemyのDestroyFunc

BP_EnemyのAttack

StopAIはStopLogicを使って止めるように変更しておきます。AIコントローラに無理に、停止用関数を実装しなくてもとめられるようになります。

BP_EnemyのStopAI

今まで使っていたBP_EnemyAIControllerはBP_BearAIに名前を変えます。Controllerを名前から抜いたのは多分その時の気分です。記憶が曖昧なのですみません。

必要のなくなったStopAI関数を消し、なぜかステージ遷移を行うようになってからバグる様になったBeginPlayにあった初期化関係にDelayをかましてやって動かすようにしました。こうしないと、どうもコントロールしているポーンにアクセスできなくなっていたのです。

BP_BearAIのイベントグラフ

今回はこんなところ。次回、次の敵を作ります。