執筆バージョン: Unreal Engine 5.6
|
こんにちは!今回は第24回ぷちコンのテーマ「スピード」にちなんで、敵の動きを遅くするスキルを作ってみましょう!
完成イメージはこちら!

「Combat」Variant テンプレートを使ってプロジェクトを作ろう
今回はUE5.6で追加された、「ThirdPerson」テンプレートの「Combat(戦闘)」Variant を使用します。
[UE5]UE5.6で追加されたバリアントオプション「Combat」を改造して遊んでみよう! の記事を参考に
プロジェクトを作成し、「Lvl_Combat」を開くところまで進めてください。
まだプレイしたことがない方は、上記の記事を参考に一度プレイしてみましょう!
下図の黄色で囲った「プレイボタン」を押すとゲームプレイが始まります。Esc キーを押すとゲームプレイが停止します。

最初に「プレイヤーがスペースキーを押したら、敵キャラクターのイベントを呼びだす」流れを組んでみましょう。
まずは、敵キャラクター側のイベントを作成します。
コンテンツブラウザ(もしくはコンテンツドロワー)を開いて、コンテンツ/Variant_Combat/Blueprints/AI フォルダにある、BP_CombatEnemy を開きましょう。

イベントグラフの何もないところを右クリックして、Add Custom Event を選択してイベントノードを追加します。
イベントの名前は Slow にします。


ひとまず、イベントが呼びだされたことが分かるように、Slow イベントノードの実行ピンをドラッグして PrintString ノードを追加しておきましょう。

次に、プレイヤー側のイベントを作成します。
コンテンツブラウザ(もしくはコンテンツドロワー)で、コンテンツ/Variant_Combat/Blueprints/BP_CombatCharacter を開きましょう。

イベントグラフの何もないところを右クリックして、Space Bar イベントノードを追加します。


追加した Space Bar ノードの Pressed ピン(=スペースキーが押されたとき)からドラッグして Get All Actors Of Class ノードを追加し、Actor Class にて BP_CombatEnemy クラスを選択します。


続けて、Get All Actors Of Class ノードの Out Actors ピンを伸ばして For Each Loop ノードを追加します。
さらに、For Each Loop ノードの Array Element ピンを伸ばして、先ほど作った Slow イベントノードを追加しましょう。 
Slow ノードの実行ピンがつながれていないので、For Each Loop ノードの Loop Body ピンとつないでおきましょう。
これで「スペースキーを押したときに存在する全ての BP_CombatEnemy オブジェクトについて、Slow イベントを呼ぶ」流れができました。
ここでプレイボタンを押して動かしてみましょう。
敵が現れるところまで移動し、敵がいる状態でスペースキーを押してみると、画面左上に「Hello」の文字が表示されるはずです。

BP_CombatEnemy のいる数だけ Slow イベントが呼ばれるので、敵が2体いるときにスペースキーを押すと「Hello」が2つ表示されますね!
※最初の敵1体を倒すと、新たに敵が2体出現しますよ!

敵キャラクターの動きを遅くする処理を作成しよう
さて、いよいよ敵キャラクターの動きを遅くする処理を作っていきましょう。
BP_CombatEnemy を開いてください。
先に追加した PrintString ノードに続けて、Set Custom Time Dilation ノードを追加します。

このノードは、アクター1体の挙動を早くしたり遅くしたりすることができます。
引数の Dilation が 1.0 のときアクターが通常と同じ挙動の早さになり、1.0 より値を小さくすると遅くなります。
今回は敵キャラクターの挙動を遅くしたいので、0.2 ぐらいにセットしてみましょう。

これで一度プレイボタンを押して動かしてみましょう!

敵がいる状態でスペースキーを押すと「Hello」の文字とともに敵の動きが遅くなりますね!スキルっぽくなってきました!
それでは次に「スキル発動で敵キャラクターの挙動を遅くしたのち、数秒経過したら元の早さに戻る」ようにしてみましょう。
元に戻るまでの時間は、ここでは 3秒にしてみます。
先ほど配置した Set Custom Time Dilation ノードに続けて
Delay ノードを追加して Duration を 3.0 にします。
続けて Set Custom Time Dilation ノードを追加し、Dilation を 1.0 にしましょう。

ここで、スキルの開始~終了が分かりやすくなるようにしておきましょう。
最初に配置した PrintString ノードの In String を「Hello」から「SLOW ON」に変更します。
一連の処理の最後にも PrintString ノードを追加して、こちらは「SLOW OFF」と出力するようにしましょう。

それでは、プレイボタンを押して動かしてみましょう。
スキルの発動後、一定時間だけ敵の動きが遅くなるようになりました!
まとめ
今回は「全ての敵キャラクターに対して、一定時間動きを遅くする」スキルを作ってみました。
これを元に、スロー効果の時間や使用回数を制限してみたり、
ボールのようなオブジェクトを敵キャラクターに当てることで発動する(当たった敵キャラクターだけを遅くする)
スキルに改造してみても面白いかもしれません。
ぜひ、試してみてくださいね!