UE5 簡単にコヨーテタイムを実装する方法

この記事は、Unreal Engine (UE) Advent Calendar 2024 シリーズ4の2日目の記事です。

コヨーテタイムとは

アクションゲームを作る際に、難易度設定、手触り感が問題になることが多々あります。

不快感を減らす対策の一つとして、崖から落下した少しの間ジャンプ可能な状態にするという方法が、
コヨーテタイムと呼ばれ、広く好意的に受け入れられています。

詳細記事≫ 開発者が語る『Celeste』の秘密。

この手法を、ブループリントで実装する方法を記事にしようと思います。

ブループリント実装例

方法論は、いくつもあると思いますが、実装のし易さ、理解のし易さの点から、
以下のようなブループリントの組み方が良いのではないかと思います。(キャラクターブループリント内)

  • Event OnWalkingOffLedge 地面からキャラクターが落下した際に呼ばれるイベントノード。
  • Jump Max Count [2] 落下時に、Jump Count が 1つ消費されるので、一時的に、Jump Max Count を増やします。
  • Retriggerble Delay [0.2] ここで指定した秒数が、コヨーテタイムになります。
  • Jump Max Count [1] コヨーテタイム終了後、Jump Max Count をリセット。

補足

前述一連のノードで基本的には、機能の実装としては終了ですが、
コヨーテタイムを長めに設定した場合、2段ジャンプが可能な瞬間が発生する可能性がある為、
以下のノードも追加しておくと安全かなと思います。

  • Event OnLanded キャラクターが地面に着地した時に呼ばれるイベントノード。
  • Jump Max Count [1] Jump Max Count リセット。

以上のノードを組むことで、意図しない2段ジャンプが可能なタイミングを消すことができます。

最初から2段ジャンプなどが可能な仕様の場合、
Jump Max Count の値を全体的に「+1」すると良いと思います。

あとがき

今回は、検索をかけても意外と方法を見かけなかったので、

実装法(の一例)を記事にしてみました。

記事上効果がわかりやすい値にしているので、コヨーテタイムは好みの時間に設定して下さい。

以上です。

アドベントカレンダー3日目もお楽しみに。

ご意見などTwitterのリプライにいただけると助かります。