我正在制作一个2D横向卷轴游戏,但是我无论如何都无法实现跳跃。这是我处理左右移动的方式:
for(var i = 0; i < time; i++)
newVelocityX = (oldVelocityX + accelerationX) * frictionX;
然后更新我的玩家位置我这样做:
positionX = oldPositionX + newVelocityX;
这很好用,变量"time"只是自上次运行函数以来的毫秒数。摩擦力在X方向上很好用,我很高兴一切都在X方向上很好。这是我在Y方向上的代码:
for(var i = 0; i < time; i++) {
accelerationY += gravityAccelerationY;
newVelocityY = oldVelocityY + accelerationY;
}
物体由于重力原因可以很好地下落。如果用户按上箭头键时我设置一个负的accelerationY,那么甚至可以使玩家跳跃,但在快速电脑上跳得很高,在旧电脑上跳得很低。我不确定如何解决这个问题,我认为我已经通过将其放入for循环中来解决它。