私は現在、Android 向けのゲームを開発しています。私が抱えている問題について、あなたの専門知識を教えてください。
バックグラウンド:
私のゲームにはフレーム レートに依存しないモーションが組み込まれており、必要な速度計算を実行する前にデルタ時間値が考慮されます。
ゲームは伝統的な 2D プラットフォーマーです。
問題:
これが私の問題です(簡略化)。私のキャラクターがプラットフォームの上に立っている正方形であるとしましょう (「重力」は characterVelocityDown の一定の下降速度です)。
衝突検出を次のように定義しました(Y 軸が下向きであると仮定します)。
characterFootYが正方形のキャラクターのベースの y 座標、platformSurfaceYがプラットフォームの上部 y 座標、platformBaseYがプラットフォームの下部 y 座標であるとします。
if (characterFootY + characterVelocityDown > platformSurfaceY && characterFootY + characterDy < platformBaseY) {
//Collision Is True
characterFootY = platformSurfaceY;
characterVelocityDown = 0;
} else{
characterVelocityDown = deltaTime * 6;
このアプローチは、ゲームが通常の速度で実行されている場合は問題なく機能します。ただし、ゲームの速度が低下すると、deltaTime (前のフレームと現在のフレームの間の経過時間) が大きくなり、characterFootY + characterVelocityDownが衝突検出を定義する境界を超え、キャラクターはまっすぐ落下します (あたかもテレポートするかのように)。 )。
これを防ぐには、この問題にどのようにアプローチすればよいですか?
ご協力いただきありがとうございます。あなたから学ぶことを楽しみにしています。