私はJavaで小さなゲームを組み立てていますが、私が遭遇した問題の1つは、プレイヤーキャラクターの移動速度が上がるにつれてアニメーションのスピードが上がることです。1つの変数をもう一つ増やす
アニメーションの速度を上げるには、アニメーションの各フレームが表示される時間を、最も遅いスピードの場合は「0.2」、最高スピードの場合は「0.1」の最大値から減らす必要があります。
私の現在のコードは動作しますが、はっきり少し不器用です。残念ながら、私はそれを置き換えるためのエレガントなソリューションを考えることはできません。
public float getAnimationSpeed()
{
float _absVel = Math.abs(_vel.x);
if(_absVel > 10 && _absVel <= 50)
{
return 0.1f;
}
else if(_absVel > 50 && _absVel <= 150)
{
return 0.075f;
}
else if(_absVel > 150)
{
return 0.05f;
}
else
{
return 0f;
}
}
あなたは機能もまだ(例えば、プレイヤキャラクタが0の速度を持っている場合、アニメーションが再生されてはならない)ようなアニメーションを表示するために使用され、ゼロを返すことがわかります。
'MathUtils.clamp()'を使用して、最大と最小の間の最終アニメーション値を固定することができます – Zac
これははるかに良い解決策に見える、ありがとう! 1つの質問、オフセットの仕組みを簡単に説明できますか? –
オフセットを使用すると、結果を必要に応じて調整できます。 たとえば、オフセットが0の場合、次のようになります。_absvel = 10 - > result = 0.1、および_absvel = 100 - > result = 0.01 オフセットが0.1の場合、_absvel = 10 - > result = 0.2 and _abslevel = 100 - > result = 0.11 オフセットを増やすほど、_absVelは最終結果に影響を与えません。 – Driblou