ゲーム制作 UnrealEngine5

【UE5】敵キャラクターの作成 PartⅢ(Projectile Movement)

閲覧いただきまして、ありがとうございます。

今回も、敵キャラクタのフリップブックとブループリントクラスを作成して、適当に動かしてみたいと思います。
Projectile Movement を使用してホーミング機能を試してみます。

UnrealEngine5 ゲーム開発はじめました。数えてシリーズ17回目の投稿になります。

敵キャラクタの「フリップブック」を(適当に)作成して、

敵キャラクタの「ブループリントクラス」を作成していきます。今回は、親クラス「PaperZDCharactor」で作成しました。

Projectile Movement コンポーネント追加と設定

敵キャラクターのブループリントを開いて、
追加をクリックして、「ProjectileMovement」コンポーネントを追加します。

ProjectileMovementを選択して、右側詳細(▼プロジェクタイル)を設定します。

Initial Speed
MaxSpeed
それぞれに値を設定します。今回は100と設定しました

Projectile Gravity Scale
0と設定すると重力の影響を受けなくなります。

右側詳細(▼ホーミング)を設定します。

Is Homing Projectile にチェックを入れます。
Homing Acceleration Magnitude に 値を設定します。
(今回は100と設定しました)
※値を大きくすると直線的に
ターゲットに向かってくるようになります。

今の状態では、ホーミングするターゲットが決まっていません。
テストプレイして、進行方向に向かって一定速度で移動すれば成功です。

ホーミングするターゲットを決める

ホーミングするターゲットを決めていく設定をしていきます。

Event BeginPlay から
「set Homing Target Component」 を使います。

Homing Target Component のターゲットにGet ProjectileMovementComponentを接続します

Homing Target Component に、Playerの位置情報をセットしたい。。。

Get Player Pawn を使用して、
playerのブループリントクラスをCastすることで、
playerのブループリントクラスとアクセスすることが
できるようになります。

get capsule component と接続して、player の capsule component をターゲットに設定します。

これを homing target component の Homing Target Component と接続することで、
playerの位置情報をターゲットに設定できるはず。。。

※ Cast to ~(今回はplayer_BP) を純粋キャストに変更しておかないと、コンパイル時にエラーが発生することを確認しました。

テストプレイして、敵キャラクタがplayer に対して向かってくるようになれば、ここまでは成功です。

向きの調整

もう少しひと手間かけてみましょう。
player との位置を比較して、向きの表示切替をしてみます。

player と 自分(敵)との位置を[Get Actor Location] で取得して、差を計算して、条件で向きを切り替えれば、実現できそうです。

player の位置は、Get Player Pawn を使えば、取得できます。

敵キャラクタのブループリント EventBeginPlayの最後のノードに、
「SetTimerByEvent」を追加して、Loopingにチェック→Eventにカスタムイベント(向きの表示を切り替える)を追加することで
実現できそうです。

カスタムイベントは「SpriteFlip」という名前にしておきました。

比較値のX軸がプラスで上向きの表示、マイナスで下向きの表示に切り替えてみます。

比較値のX軸がプラス(>0)で上向きのFlipBookをセット
比較値のX軸がマイナス(<0)で下向きのFlipBookをセットするようにしてみました。

上向きの表示

下向きの表示

それぞれ想定通りの動きをしてくれました。

今回は、Projectile Movement を使用してホーミング機能を試してみました。

それでは、また。

初めから読んでいない方はこちらからどうぞ ↓
【UE5】UnrealEngine5でゲーム開発始めました - aki★'s technical-Lab (akihisa-h.com)

-ゲーム制作, UnrealEngine5