「Vtuberの雑学メモ帳」

注目ゲームの攻略記事&VTuber関係の記事をまとめる趣味100%の雑記ブログ。※少年Vtuber「不断シエル」と姉が運営しています。

【UE5】「ステップ回避」を作る&「ジャスト回避」っぽく無敵時間とクールダウンも追加する

UE5初心者「クールダウン付きのステップ回避を作る方法「ジャスト回避っぽくステップ開始時に無敵時間を追加する方法について調べてまとめてみた。

▼本文は「続きを読む」からどうぞ~!

◆ステップ回避の作り方動画(必見)


「クールダウン付きダッシュ(≒短距離ステップ)の追加方法」を解説している動画。
1番簡単な実装方法なので、初心者にオススメ。

【復習用メモ】

  • 上部ツールバー[Edit]>[Input]>[▼Action Mappings]右の[+]ボタン[Dash]を作成左シフトキーに割り当てる
  • プレイヤー[BP_ThirdPersonCharacter]Boolean型変数「IsDashing」を追加
    ※初期値(偽)のまま追加する。下線部は各自で好きに命名&キーバインドしてね!

[BP_ThirdPersonCharactor]のイベントグラフを編集する。

[BP_ThirdPersonCharactor]のビューポート>左上[Character Movement(Char~)]選択>右側[Details]欄>[①[Use Separate Braking Friction]=オフ②[Falling Lateral Friction]=[5]へ変更

※[①≒ブレーキの摩擦演算]は地表での横滑り防止のために無効化、[②≒落下時の横方向の摩擦係数(空気抵抗)]も落下中に慣性で吹っ飛ぶのはおかしいから上げる

【補足】

  • [Get Velocity]ノード
    現在の速度を取得する。
  • [Launch Character]ノード
    プレイヤーなどをノックバックさせる時(吹き飛ばす時)に使う。
    ※入力の[Launch Velocity]によって、吹き飛ばす方向~吹き飛ばす時の速度(パワー)を変更できる。

ちなみに、本格的なゲームを作る場合、他の攻撃手段との兼ね合いもあるので「GAS(Gameplay Ability System)」という機能を覚えた方が良いようだ。
(ただし、この機能はC++必須の上級者向け機能らしく、覚えるまで時間がかかりそう)

  • 戦闘メインじゃないミニゲーム程度の規模なら、今回紹介した超お手軽なステップ機能でも十分だと思う。

◆短時間の無敵判定を追加して「ジャスト回避」っぽく

ステップ回避が意外と楽に実装できたから、今度は使用直後に無敵判定を追加して「ジャスト回避」が狙えるようにしていく。

①テスト用の与ダメアクター【BP_DamageCube】を作る

ビューポートの[+Add]から[Cube]と[BoxCollision]を追加し、レベル上へ配置

▼イベントグラフから与ダメージ用ノード[Apply Damage]を追加する。

※テスト用なので、[Apply Damage]からダメージ判定を送れるBPなら何でもOK!
今回は、「プレイヤーが箱と接触する度に10ダメージ受ける」テスト用BPを用意した。

②【BP_ThirdPersonCharacter】を編集

プレイヤーのBPにFloat変数「HP」「Damage」Boolean変数「IsInvincible?(初期F)」を追加する。

▼イベントグラフを以下のように編集する。

  • ダメージ受信用ノード[Any Damage]の手前部分へ、Boolean変数(無敵状態判定用の変数)で分岐処理を入れれば、楽に無敵状態が表現できる。
  • 無敵の時(T)は、[Any Damage]を実行しない。
    (ノーダメージ=無敵。ただし、0ダメの状態異常やノックバック効果は受ける)
  • 無敵じゃない時(F)は、[Any Damage]から通常通り被ダメージ計算を行う。

ジャスト回避の成否判定はやってないので、ジャスト回避成功時に音やエフェクトを発生させたい場合、別の作り方を選ぼう

あくまで「ステップ開始後の0.3秒間はダメージを一切受けない」という仕組みに変えただけだから、ジャスト回避と呼べるか微妙な作り方になってしまった。

ただ、ジャスト回避の楽しさって大半は「タイミングよく回避してノーダメージ化を狙う」という部分から生まれるものだと思うし、偽物のジャスト回避でも無いよりはマシ…なのかも!

  • 念のため[Event Beginplay]後に、毎回[IsInvincible?]をOFFに上書きしておいた方が安心?
    (無敵中に強制終了した時、再開した後どうなるかが分からない)

【おまけ】無敵状態になれる「スター」系バフアイテム作成

ジャスト回避を作ったついでに、マリオの「スター」のような触ったら10秒ほど無敵状態になれるバフアイテムも作ってみた。

まず、ビューポートの[+Add]から[Cone]と[BoxCollision]を追加し、レベル上へ配置しよう。
(ConeはStaticMeshなら何でもOK。スターやハートに変えるとそれっぽいかも!)

▼イベントグラフを以下のように編集する。

※DestroyComponentの部分には、左上からアクターのコンポーネント(StaticMeshやBoxCollisionなど)をドラッグして繋げておく。

最初、DestroyActorを入れた時は消滅以降の処理がうまく実行されなかったけど、DestroyComponentに変えたらちゃんと実行してくれた

Cast toを使わずにBPIで実装するパターンも今度試してみたい。

◆後で学びたい発展編


▲ステップにアニメーションを付ける場合、この3分動画が参考になりそう。


▲本格的な無敵の表現にはGateノードを使うらしい。


ジャスト回避のモーション成功時の演出まで加えたいなら、この動画が参考になるかも…?