ジャンプアニメーションで着陸部分を適切に処理する方法


16

このスプライトシートを見てください。

メガマン

フレーム1〜3は「ジャンプアップ」フレームであり、その後、ジャンプの「ピーク」まで(重力が後退し始める)最後のフレームが修正されることは明らかです。下に移動する場合、フレーム4〜7が使用され、すべて「アイドル」フレームで終了します(このジャンプスプライトでは表示されません)。

私の質問は、このスプライトのフレーム6と7についてです。エンティティがジャンプ後に「着陸」するとき、アニメーション6〜7を「着陸」アニメーションとして実行することを想定しています。ジャンプフレームで下に移動する場合、4〜5はアニメーションの「開始」なので簡単です。フレーム5は落下する限り保持できますが、フレーム5から6-7-xに移行する適切な方法は何ですか?次のフレームが落下かどうかを確認してから着陸を「開始」しますか、それとも実際に地面にぶつかったときに行いますか?

崖から飛び降りたり、低い屋根の下でジャンプして頭にぶつかり、跳ね返るなどのさまざまなシナリオのため、時間を計ることはできません。

何か案は?

回答:


17

通常のアプローチは、ジャンプに関連する3つの状態を持つことだと思います:ジャンプ(ヒーローがジャンプの最高点まで上昇)、落下(ジャンプの最高点から地面まで)、着陸(ジャンプはヒーローが地面に立って終わる))。

これらの状態を検出する方法はいくつかあります。通常は、状態フラグを設定するいくつかの衝突チェックです。たとえば、キャラクターの物理ステップでは、以下の衝突をチェックできます。衝突がない場合、キャラクターは空中にいます。キャラクターの垂直速度が正の場合、ジャンプ状態になります。それ以外の場合、落下状態になります。それはだ場合は落下状態、そしてそれはだより我々は、以下の衝突を検出したランディング状態なので、着陸アニメーションへの切り替えをすることができます。

このアニメーションは通常、ヒーローが実際に地面に着いたときに再生されます。アニメーションシーケンスは短いため、着陸は高速に見えます。また、鮮明で正確なコントロールの感覚を作り出します。キャラクターが長い着陸シーケンスを実行できる場合もありますが、その後、キャラクターが着陸アニメーションをキャンセルして走り出すことが可能です(例:Castlevania:SotN)。


+1。状態についての良い点。状態から、他の詳細/モードを把握できます。
Kromsterは、サポートモニカ

5

私はこれが2つの方法で行われたことを見てきました:

  1. バウンディングボックスが最初に地面と衝突したとき、5-> 6-> 7の高速遷移を行います。
  2. 2番目の「ゴースト」バウンディングボックスを使用します。これは、実際のバウンディングボックスの下の小さな部分を拡張して5-> 6を開始し、実際のバウンディングボックスが衝突したら6-> 7を実行します。

2番目のケースが気に入りました。ゴースト境界ボックスは、キャラクターの速度に応じて遠くに設定できるため、非常に柔軟なようです!
ペック

興味深いアプローチNbr2。試したことはありませんでしたが、ありがとうございます。
sPirc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.