ジャンプアニメーションをUnityと統合する方法

今日、私はUnityに統合したかったBlenderでの最初のジャンプアニメーションを完成させました。 「ジャンプボタンを押したら、ジャンプアニメーションをトリガーして、それだけです!」のようなことをしなければならないと思いました。 程遠い!

私はこれをしました、そして、結果は…私が期待したものとは全く異なりました。

前に説明したプロセスがいくつかの特定のケースで機能することは確かですが、私の場合は残念ですが。

もっと長い方法で行かなければなりませんでした。

ジャンプの概要

通常のジャンプは、3つの異なるフェーズに分割できます。

  • ジャンプの衝動:キャラクターが衝動を受けてジャンプするとき。
  • 落下段階:キャラクターが空中にいる間、安定を維持しようとしているとき。
  • 着陸段階:まだ空中にいるキャラクターが地面に着く準備をしているとき。

ゲームではどのように機能しますか?

プレーヤーがスペースバー(明らかにジャンプボタンis)を押すと、ジャンプアニメーションがトリガーされます。

プレイヤーが宙に浮くと、別のアニメーションが始まります。地面に到達するまでループする落下フェーズです。

次に着陸アニメーションが開始されますが、微妙です。キャラクターが地面に着いた直後にこのアニメーションが開始された場合、それは遅すぎます! このフェーズでは、私たちは地面にぶつかることになることを知っています(単にそれを見ることができるからです)。 したがって、距離を簡単に評価し、空中の衝撃に備えることができます。

ジャンプしたときの振る舞いを考えてみましょう! 私たちが地面にぶつかるのを見るとき、私たちは「影響」に備える準備をしています。 私たちには、地上のビジョンがあり、準備が必要なタイミングをすばやく評価できるためです。

私たちのケースで欠けているのは、地面からのキャラクターの距離を評価するものです! キャラクターから地面までの距離を評価する1つの方法を紹介しますが、他にも多くの方法があることに注意してください。 他のゲームエンジンで使用できます。

トリックは、キャラクターから速度の方向に光線を投じることです。 これで、着陸アニメーションに到達する直前の適切なタイミングでトリガーできるようになります。 🥳

準備はいい?

Unityでの実装

Unityには、Raycastと呼ばれるツールがあり、私たちが望むものを正確に提供します。

次の2つのステップで進めます。

  • 地面に触れるまでの距離を決定するために、速度の方向にレイキャストを送信します。
  • 垂直軸の速度、Unityのyが負(つまり、落下していることを意味)で、地面が近すぎる場合は、着陸アニメーションをトリガーします。

完璧ですが、ゲームにジャンプすると、スクリプトが適切なタイミングでアニメーションをトリガーします。 無限の彼方へ! ️