我目前正在开发一款Android游戏,希望在遇到问题时能得到您的专业建议。
背景: 1. 我的游戏采用帧率无关的运动方式,在执行必要的速度计算之前考虑增量时间值。 2. 这是一个传统的2D平台游戏。
问题: 这是我的问题(简化版)。假设我的角色是一个立方体,站在一个平台上(假设“重力”是角色向下的恒定速度characterVelocityDown)。
我定义了以下碰撞检测(假设Y轴向下): 给定 characterFootY 是我的正方形角色底部的y坐标, platformSurfaceY 是平台的上部y坐标, platformBaseY 是平台的下部y坐标:
这种方法在游戏以正常速度运行时非常有效;但是,如果游戏变慢,deltaTime(即前一帧和当前帧之间的经过时间)会变大,而characterFootY + characterVelocityDown会超出定义碰撞检测的边界,角色就会直接掉落(就像传送一样)。如何解决这个问题以防止出现这种情况?感谢您的帮助,期待从您那里学到更多!
背景: 1. 我的游戏采用帧率无关的运动方式,在执行必要的速度计算之前考虑增量时间值。 2. 这是一个传统的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会超出定义碰撞检测的边界,角色就会直接掉落(就像传送一样)。如何解决这个问题以防止出现这种情况?感谢您的帮助,期待从您那里学到更多!