Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

このレッスンでは、プレイヤー のロジックにアニメーションを統合し始めます。

この時点で、プレイヤーはすでに移動とジャンプができるようになっています。今度は、キャラクターがその状態に視覚的に反応し、アイドルウォーキングランニング、およびフォーリングなどの正しいアニメーションを再生する必要があります。

主なアイデアはシンプルです。キャラクターの現在の状態を使用して、どのアニメーションを再生するかを決定します。

たとえば:

  • プレイヤーが地面にいて動いていない場合、アイドルアニメーションを再生します。
  • プレイヤーが地面にいて動いている場合、ウォーキングアニメーションを再生します。
  • プレイヤーが走っている場合、ランニングアニメーションを再生します。
  • プレイヤーが地面にいない場合、フォーリングアニメーションを再生します。

これはキャラクターコントローラーを作成する際の最も一般的なパターンの1つです。移動ロジックがキャラクターが何をしているかを制御し、アニメーションロジックがその情報を読み取って、プレイヤーが何を見るべきかを決定します。

1. アニメーション実行ロジックの作成

イベントを作成して整理する方法を学んだので、アニメーションロジックブロックのためにアニメーション更新という新しいイベントを作成しましょう。

このイベントは、プレイヤーのアニメーション状態を更新する役割を持っています。

最初に行うべきことは、このイベントをキャラクターが現在地面にいるかどうかを確認するIfノードに接続することです。この情報は、どのアニメーションを再生するかを決定するために使用されます。

たとえば、プレイヤーが地面にいる場合、アイドル、ウォーク、またはランのアニメーションを再生できます。プレイヤーが地面にいない場合、代わりにフォーリングアニメーションを再生できます。

次に、キャラクターアニメーションを管理および再生するアニメーションコンポーネントにアクセスする必要があります。

これを行うために、最初にエンティティを取得し、その後子ノードを使用して子オブジェクトの名前であるメッシュを取得します。これは、私たちのプレイヤーのメッシュオブジェクトです。このサブエンティティから、アニメーションコンポーネントにアクセスできます。

image.png

おそらくアニメーションコンポーネントに複数回アクセスする必要があるため、エンティティの取得子の取得、およびアニメーションコンポーネントの取得ノードを再利用可能な関数に変えることができます。

これを行うには、選択したノードを右クリックし、選択を関数に昇格を選択します。

これにより、このロジックを含む関数が作成され、グラフがクリーンになり、理解しやすくなります。また、このフローをロジックブロックの他の部分で再作成せずに再利用できるようになります。

image.png

この関数の名前をアニメーション再生に変更しましょう。

明確で説明的な名前を使用することは、ビジュアルロジックで作業しているときに非常に重要です。グラフが成長するにつれて、良い名前は各イベント、関数、ロジックブロックが何を担当しているかを迅速に理解するのに役立ちます。

image.png

次に、アニメーション再生関数をダブルクリックして開き、編集します。

次に、関数入力ノードを右クリックし、新しい入力ピンを2つ追加します。

最初の入力は:

  • アニメーション、タイプ文字列

この入力は、再生するアニメーションの名前を指定するために使用されます。

image.png

2番目の入力は:

  • ブレンド、タイプ浮動小数点数

この入力は、アニメーション間の遷移時間を制御するために使用されます。

image.png

これらのパラメータは、関数をはるかに柔軟にします。

各アニメーションごとに異なるノードのブロックを作成する代わりに、同じアニメーション再生関数を使用し、呼び出すたびに異なるアニメーション名とブレンド値を渡すことができます。

image.png

アニメーションコンポーネントの取得から名前による再生ノードを追加します。

このノードは、名前に基づいてアニメーションを再生する役割を持っています。

次に、関数入力ノードで作成したアニメーションブレンドパラメータをそれぞれ名前による再生ノードの対応するフィールドに接続します。

これにより、アニメーション再生関数が呼び出されるたびに、アニメーション名とブレンド時間が渡され、これらの値が名前による再生に渡されます。

名前による再生ノードでループオプションを有効にするのを忘れないでください。

ループが有効になっていると、アニメーションは最後のフレームに達したときに停止するのではなく、アクティブな間、再生され続けます。これは、アイドル、ウォーキング、ランニング、フォーリングのようなアニメーションには特に重要で、通常、継続的に再生され続ける必要があります。

最後に、名前による再生ノードの出力フロー関数出力に接続し、アニメーション再生関数の実行を完了します。

image.png

これでキャラクターのアニメーションを再生するのがはるかに簡単になります。

地面にいるかどうかを確認するIfノードに戻り、アニメーション再生関数を使用します。

条件がで、つまりプレイヤーが地面にいる場合は、アニメーションパラメータとして"p-idle"を渡して関数を呼び出します。これはキャラクターが静止しているときに使用するアニメーションです。

条件がで、つまりプレイヤーが地面にいない場合は、"p-fall"を渡して関数を呼び出します。これはキャラクターが空中にいるときに使用するアニメーションです。

どちらの場合も、ブレンド値に0.1を使用します。これにより、アニメーションに小さな遷移時間が与えられ、変化がよりスムーズになり、アニメーション間で瞬時に切り替わるのではなくなります。

image.png

これで、アニメーション更新イベントを移動プレイヤーイベントのフロー内で呼び出す必要があります。

このようにすることで、プレイヤーの移動ロジックが更新されるたびに、アニメーションロジックも更新されます。

これにより、プレイヤーは現在の状態に応じてp-idlep-fallの間で切り替えることができるようになります。プレイヤーが地面にいるときはアイドルアニメーションが再生され、プレイヤーが空中にいるときはフォーリングアニメーションが再生されます。

image.png

完璧です。次に、プレイヤーのアニメーションロジックを発展させて、移動アニメーションを追加しましょう。

これを行うために、歩行方向を取得し、長さノードを使用して移動ベクトルの強度を測定します。

移動ベクトルの長さは、キャラクターが移動しているかどうかを教えてくれます。

次に、Ifノードを追加してこの値が0より大きいかどうかを確認します。

結果がの場合、キャラクターは移動していることを意味し、そのためウォーキングアニメーションp-walkを再生できます。

結果がの場合、キャラクターは移動していないことを意味し、アイドルアニメーションp-idleを再生する必要があります。

これにより、プレイヤーは移動に基づいて自動的に静止と歩行の間を切り替えます。

image.png

image.png

キャラクターの移動アニメーション動作を完成させるために、さらに2つの詳細を追加する必要があります。

まず、プレイヤーが走っているときにランニングアニメーションを再生する必要があります。

次に、プレイヤーが移動している方向を向くようにする必要があります。

歩行と走行のアニメーションを制御するために、プレイヤーが移動しているかどうかを確認するノードの直後にシーケンスノードを追加します。

次に、Is Runningプロパティを取得し、その値を確認するためにIfノードを使用します。

Is Runningの場合、ランニングアニメーションを再生します。

Is Runningの場合、ウォーキングアニメーションを再生します。

これにより、プレイヤーは移動中であるか停止しているかだけでなく、移動中にウォーキングアニメーションまたはランニングアニメーションを使用するかを知ることができます。

追加したシーケンスの2番目のThen出力で、Look At Smoothノードを使用します。

このノードは、キャラクターをスムーズに回転させ、移動している方向を向かせます。これにより、動きがより自然に感じられ、キャラクターメッシュが移動の方向を視覚的に向くことができます。

image.png

Get Walk Directionの値を-1で掛け算して、Look At Smoothに送信する必要があります。

これにより方向ベクトルが反転し、キャラクターメッシュが向いている方向を修正します。キャラクターモデルのインポートや方向に応じて、視覚的なメッシュが移動ベクトルの逆の方向を向く場合があります。-1で掛け算することで、接続しながら正しい方向を向くようにします。

image.png

その後、既に掛け算された方向をLook At Smoothノードに接続します。

次に、回転させるオブジェクトのトランスフォームを提供する必要があります。

これを行うために、エンティティにアクセスし、その後プレイヤーのメッシュを取得して、Transformの取得ノードを使用します。

このトランスフォームはLook At Smoothに接続し、回転が正しいオブジェクト、つまりキャラクターの視覚的メッシュに適用されることを確認します。

image.png

この時点で、プレイヤーのアニメーションロジックはすでにはるかに完全なものとなっています。

キャラクターは、現在の状態に基づいてアイドル、フォーリング、ウォーキング、およびランニングアニメーションを切り替えることができるようになりました。また、スムーズに回転して移動方向を向くことができ、コントローラーがより自然に感じられ、ゲームプレイロジックと視覚的に結びつきます。