我正在製作一個2D側卷軸,對於我的生活我無法跳上班。這就是我正在做的左右移動:在遊戲中跳躍
for(var i = 0; i < time; i++)
newVelocityX = (oldVelocityX + accelerationX) * frictionX;
然後更新我的球員位置我做
位X = oldPositionX + newVelocityX;
這個效果很好,變量「time」只有ms自從我上次運行該函數以來的數量。摩擦效果很好,我很高興它在X方向都很好。這是我在Y方向上的:
for(var i = 0; i < time; i++) {
accelerationY += gravityAccelerationY;
newVelocityY = oldVelocityY + accelerationY;
}
由於重力的緣故,物體掉下來就好了。如果我在用戶點擊向上箭頭時設置了負向加速度Y,那麼我甚至可以讓玩家跳躍,但是在快速計算機上他們跳得很高,而在舊計算機上他們跳得很低。我不知道如何解決這個問題,我認爲我已經通過像我這樣把它放在首字母循環中來解決這個問題。
聽起來好像舊計時器的到期時間和新計時器開始之間存在顯着的時間間隔。當然,在慢速計算機上,這種間隔時間會更長。但這只是一個想法:如果不相關,請不要理會。祝你好運。 – thb 2012-04-01 00:46:22
我們可以看到更多的代碼嗎?比如主遊戲循環? – 2012-04-01 00:54:40