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フレームだけ残します。
今回のジャンプアニメは超手抜きなので、もっとあれこれいじればより完璧なアニメーションになるかと思います。
コメント