先に前回の記事を読んでから、この記事を読み始めていただきたいです。こんにちは、前回から始まった『パンチングゲーム製作』。『BPインターフェイスの作成』をやってきました。『敵が死亡したら消える処理』を実装していきます。クラス』で新しいBPを作成します。StaticMeshActorを継承しましょう。球体型の敵にしようと思うので、『BP_Enemy_Ball』と名付けましょう。7.敵のパラメータを設定しよう!さて、今のままだと何も見えません。敵の姿を追加していないためです。敵のBPを開いて、『StaticMeshComponent』の『StaticMesh』を変更し、敵の姿を設定しましょう。今回は最初からUE4に用意されている『SM_Ball_01』を使用します。エンジンのコンテンツを可視化しないと使えないので、そこだけ注意です。続いてStaticMeshComponentを、以下のように変更してください。・『トランスフォーム』の『可動性』をムーバブルに変更。Physics』をTrue。・『Collision』の『SimulationGeneratesHitEvents』をTrue。・『Collision』の『オーバーラップイベントを発生させる』をTrue。・『Collision』の『コリジョンプリセット』を『PhysicsActor』に変更。ここの変更はUE4で衝突判定をとりたい場合、必須になります。絶対に忘れないようにしましょう。ちなみに筆者はある時、これを忘れ、かれこれ数時間単位で頭を抱えたことがあります。8.敵のブループリントを実装しよう!(その1)いよいよブループリントを作成していきます。敵のブループリントを開きます。今はまだ、特に何も処理は書かれていないはずです。(作ったばかりですから当然ですね)これから移動のための処理をここに追加します。bool型の変数を作成します。この変数は敵の生存・死亡判定に使用しますので、『IsAlive』とでも名付けましょう。Tickノードとブランチノードを接続し、条件式には変数IsAliveを設定します。敵の死亡時・生存時に別々の処理を行うためです。続いて、『AddWorldOffset』ノードを作成し、先ほどのブランチのTrueに繋げます。作成した時に一緒に出てくると思いますが、引数ターゲットに何も繋がっていない場合はコンポーネントのウィンドウから『StaticMeshComponent』をドラッグ&ドロップしてゲットして繋げましょう。『AddWorldOffset』ノードは引数に指定したターゲットに対して、引数DeltaLocationだけ移動させる処理です。9.敵のブループリントを実装しよう!(その2)移動するための処理を追加したはいいですが、まだ敵は移動しません。DeltaLocationの値に何も設定されていないからです。次は、DeltaLocationの値を設定していきます。ここの値には敵から見たプレイヤーの向きを設定すれば大丈夫です。敵から見たプレイヤーの向きの計算式は以下のようにノードを繋げればわかるはずです。プレイヤー位置(GetPlayerPawn→GetActorLocation)から敵キャラの現在位置(GetActorLocation)を減算し、その値を正規化(Normalize)しています。この値をDeltaLocationに繋げましょう。これにて、基本的な移動処理は完成になります。ほんとはもっといい別の方法があるのですが、今回はテスト目的なのでこれで十分です。10.敵のブループリントを実装しよう!(その3)今度は、死亡した時の処理を追加します。先ほどのブランチのFalseから『Delay』ノードに繋いだのち、『DestroyActor』ノードとも繋げます。引数の値は3ぐらいでいいでしょう。『Delay』ノードは引数に指定した時間だけ処理を止めるノードです。(Delayは本来多用しない方がいいと思いますが...)中途半端なところで申し訳ありませんが、今回はこれでおしまいです。