現在、Android用のゲームを開発しており、私が抱えている問題についての専門知識をお伝えしたいと思います。Androidのゲーム開発:衝突の検出に失敗する
背景:
私のゲームは が必要な速度に 計算を実行する前に、デルタ時間値を考慮したフレームレートの独立運動を、組み込まれています。
ゲームは従来の2Dプラットフォームです。
問題:
ここに私の問題(簡体字)です。私のキャラクターがプラットホームの上に立っている(キャラクターは、 "重力"がcharacterVelocityDownの一定の下向きの速度である)というふりをしましょう。
次のように私は(下方にY軸点を仮定して)衝突検出を定義している:characterFootYを考える
は、platformSurfaceYは、上側のy y座標私の正方形の文字のベースであります私のプラットフォームの - 座標、及びplatformBaseYが低い私のプラットフォームのy座標である:
if (characterFootY + characterVelocityDown > platformSurfaceY && characterFootY + characterDy < platformBaseY) {
//Collision Is True
characterFootY = platformSurfaceY;
characterVelocityDown = 0;
} else{
characterVelocityDown = deltaTime * 6;
このアプローチは、p作品ゲームが通常のスピードで走っているときはうんざりです。ゲームが遅くなる場合は、(前のフレームと現在のフレームとの間の経過時間である)deltaTimeが大きくなり、characterFootY + characterVelocityDownだけ低下衝突検出や文字を定義する境界を超えストレートスルー(まるで瞬間移動のように)。
この問題を回避するにはどうすればよいですか?
ご協力いただきありがとうございます。私はあなたからの学習を楽しみにしています!
他の誰かがこの問題を抱えている場合は、deltaTime値を上限にして特定の値を超えたときに上限に設定することができます。これはゲームのスピードを矛盾させますが、ほとんどの場合は大丈夫です。 – SeveN
前と後の両方のデルタ値がありますか?そこで比較ができるのですか? – cjk