我目前正在开发一款适用于 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超出定义碰撞检测的边界,并且角色会直接跌落(就像传送)。
我应该如何处理这个问题以防止这种情况发生?
提前感谢您的帮助,我期待向您学习!