Unreal Engine :速度でジャンプアニメーションを切り替える

Unreal Engineでキャラクターを前後左右(X軸・Y軸)に動かしましたが、今度は、キャラクターを上方向(+Z軸)にジャンプさせます。ただジャンプさせるだけでは面白くないので、停止状態(速度=0)からのジャンプと走っている状態(速度>0)からのジャンプの2種類のジャンプアニメーションを用意しました。つまり、キャラクターの速度によってジャンプアニメーションが切り替わるというわけです。

スポンサーリンク

アクションマッピングの設定

設定→エンジン項目のインプット→アクションマッピングの+ボタンを押して、アクションにはJumpを入力し、コントローラのジャンプボタンを決めます。

MyCharacter.cppのコンストラクタにJump関連の設定を入力します。JumpZVelocityの値が大きいほどジャンプする時間が長くなります。つまり、それだけ高くジャンプすることができます。AirControlはジャンプ中(落下中)のキャラクターの側方運動の自由度です。値が大きいほど自由度が高くなります。

GetCharacterMovement()->JumpZVelocity = 1000.f;
GetCharacterMovement()->AirControl = 0.2f;

アクションマッピングと関数をバインドします。アクションマッピングは軸マッピングと違い、ボタンが押された時(IE_Pressed)とボタンが離された時(IE_Released)の2種類のバインディングが必要となります。

PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump);
PlayerInputComponent->BindAction("Jump", IE_Released, this, &ACharacter::StopJumping);

<h2>AnimGraphでジャンプアニメを切り替える</h2>

Mixamoで好きなジャンプアニメーションをダウンロードしてきます。Animinstance_BPを開き、AnimGraphタブ→Movementをダブルクリックします。そこで以下のように入力します。

順番にトランジションルールを入力していきます。先ず、Idle/Walk/Run→RunningJumpのトランジションルールを入力します。

RunningJump→InAir2のトランジションルールを入力します。

InAir2→EndJumpのトランジションルールを入力します。

EndJump→Idle/Walk/Runのトランジションルールを入力します。

最後にIdle/Walk/Run→JumpStartのトランジションルールを入力します。

残りのトランジションルールはRunningJumpと一緒なので省きます。

スポンサーリンク

アニメーションフレームの削除の仕方

アニメーションは、必要に応じて加工する必要があります。特に、ランニングジャンプのInAirアニメーションに関しては、アニメーションフレームを1フレームだけ残して残りを全て削除する必要があるかもしれません。アニメーションは次の要領で加工できます。先ず、加工するアニメファイルを複製して名前を付けます。

複製したファイルを開き、必要な1フレームを選択したら前のフレームを全削除します。

残りのフレームも全て削除して1フレームだけ残します。

今回のジャンプアニメは超手抜きなので、もっとあれこれいじればより完璧なアニメーションになるかと思います。

スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました