広告 キャラクター関連テク

【ジャンプ機能】高さ、移動幅、二段ジャンプなど

Unreal Engine(UE)でプレイヤーのジャンプをカスタマイズしよう!
初心者向けからちょっと難しい設定まで、ジャンプに関するあれこれを解説します!

多段ジャンプの例
多段ジャンプの例

動作環境

当記事の動作環境は以下の通りです。
バージョンや環境によっては、正常に動作しない可能性があります。

ポイント

OS:Windows11 (Ver 22H2)

GPU:NVIDIA GeForce RTX 3060 Ti (Ver 3.27.0.112)

UE:UnrealEngine5 (Ver 5.3.0)

また、プロジェクトはサードパーソンプロジェクトの使用を前提とします。

既存のジャンプ処理を解析

ジャンプ機能をカスタマイズする前に、サードパーソンの既存ジャンプ機能を解析してみましょう。

実はとてもシンプルで、ジャンプとストップジャンプの2つの機能だけで成立しています。
つまり、サードパーソンをベースにする場合は、重力や方向などの計算をせずに済みます。

サードパーソンのジャンプ機能処理
サードパーソンのジャンプ機能処理

ジャンプノード

ジャンプノードは、その名の通りジャンプする機能です。
機能を自作すると重力や方向などを複雑に計算をする必要があります。
サードパーソンをベースにする場合はこうした計算は不要で、ジャンプノードを呼ぶだけで良いので実装が楽です。

難しい部分をすでに作ってあるのはありがたい!
地味ですが、UEの有能さが際立つ機能の一つです。

ストップジャンプノード

ストップジャンプノードは、名称とは少々異なる動きをします。
これは後述する「Jump Max Hold Time」という設定に関連し、場合によっては参照されない機能です。

ストップジャンプノードが呼ばれると、キャラが上昇を停止して落下に転じます。

上級者向け

ジャンプに関する演算は、サードパーソンブループリントの「haracter Movement」コンポーネントが制御しています。
ジャンプ機能を自作する際などで、こちらを継承したり参考にしたりすると良いでしょう。

ジャンプ機能のカスタマイズ

既存機能を知ったところで、実際にジャンプ機能をカスタマイズしてみましょう。

ジャンプカスタマイズの基本設定欄

ジャンプ機能のカスタマイズは、基本的にサードパーソンブループリントの設定を変更します。
また設定の多くは、最上位のコンポーネントを選択した状態で、詳細欄にて「jump」と検索した際に表示されます。

ジャンプ機能の基本設定
ジャンプ機能の基本設定

基本的な変更点

よく変更するであろう設定をご紹介します。

ジャンプ時間を変更する

基本設定欄の中の「Jump Max Hold Time」を変更することで、ジャンプキーを押している間上昇し続けるジャンプを実装できます。
ここには秒数を入力します。

Jump Max Hold Time設定
Jump Max Hold Time設定

ただしどんなに長押ししても、設定秒数に達した時点でストップジャンプノードが呼ばれて下降し始めます。
ストップジャンプノードは、この「Jump Max Hold Time」が0より大きい値の時に動作します。

なお、デフォルト(0)の場合はジャンプキーを長押ししても、すぐに離してもジャンプする高さは同じです。

ジャンプの高さを変更する

基本設定欄の中の「Jump Z Velocity」を変更することで、ジャンプキーを押した際のジャンプの高さを変更できます。
ここには1秒に何センチ跳躍するかを入力します。

Jump Z Velocity設定
Jump Z Velocity設定

この設定は、「Jump Max Hold Time」と違ってキーの押下時間に関係せず、キーを押した瞬間にこの設定値までジャンプします。

多段ジャンプ(2段ジャンプ、ダブルジャンプ)を実装する

多段ジャンプの例
多段ジャンプの例

基本設定欄の中の「Jump Max Count」を2に変更することで、2段ジャンプを実装できます。
ここに設定した回数までジャンプできるため、2以上の設定をすれば、多段ジャンプを実装することが可能です。

Jump-Max-Count設定
Jump Max Count設定

上級編

通常は変更する必要が無いものの、場合によっては変更すると面白い機能をご紹介します。

減速値を調整する

「Braking Deceleration Falling」には、ジャンプ中に移動キーを離した時にどの程度減速するかを設定します。

具体例としては、ジャンプキー(通常はスペースキー)押下時に移動キー(通常は上下左右キー)を同時に押している場合で且つ、ジャンプ中に移動キーを離した際に横移動速度がどの程度減速するか、です。

ここには減速する値を設定します。

ジャンプ時の減速設定
ジャンプ時の減速設定例

例えば、上図では、設定値を0にした場合と1500にした際の例を順に表示しています。
1500に設定すると、キーを離した瞬間横移動しなくなり、垂直落下します。
0を設定している場合は減速しないので、キーを離しても横移動が継続されます。

実際にジャンプしてみると分かりますが、走って勢いをつけた状態でジャンプした後に垂直落下するのは意外と難しいです。
リアリティを求めるなら少し低めの数値を、垂直落下で技を絡めるような(格闘ゲームなど)場合は高い数値を設定すると良いでしょう。

この設定はJumpという単語が入っていないため、基本設定欄にはありません。
直接「Braking Deceleration Falling」を検索します。

Braking Deceleration Falling設定
Braking Deceleration Falling設定

ジャンプ中に方向を切り替える

「Air Contorol」を変更することで、ジャンプ中に別方向へ移動させることができます。
ここには0~1の数値を入力します。1に近いほど別方向への移動量が大きくなります。

デフォルト(0.05)では、ジャンプすると別方向へはほぼ動きません。(向きは変わるが移動はしない)

ジャンプ中に方向を変える例
ジャンプ中に方向を変える例

実際にジャンプしてみると分かりますが、ジャンプした後に別方向へ移動するのは難しいです。
リアリティを求めるなら0に近く、特殊なキャラにしたければ1に近い値を設定しましょう。

この設定はJumpという単語が入っていないため、基本設定欄にはありません。
直接「Air Control」を検索します。

Air Control設定
Air Control設定

最後に

UEのサードパーソンキャラクターは有能で、通常のゲームで必要になる機能は初めから揃っています。
だからこそ、別の開発者と差をつけるには、ジャンプなど初めから備わっている機能をカスタマイズすることが重要です。
デフォルト設定から少し変えるだけでも、違った挙動に見えるので、ぜひ実践してみましょう!

-キャラクター関連テク
-