2010-06-18 48 views
1

我很好地調整了我的2D平臺遊戲物理,當我添加慢動作時,我意識到它是搞砸了。2D平臺重力物理與慢動作

我遇到的問題是,由於某些原因物理學仍然取決於幀率。所以當我縮小時間時,每個力量也縮小。所以跳躍力量被縮小了,這意味着在慢動作中,角色垂直跳過較小的高度,並且重力也縮小,因此角色在空中進一步下降而不下降。

我送更新功能,希望有人能幫助我在這裏(I分離的垂直(跳躍,重力),並在平臺上行走(任意行走方向 - 平臺可以是任意角度的)載體):

characterUpdate:(float)dt 
{ 
    //Compute walking velocity 
    walkingAcceleration  = direction of platform * walking acceleration constant * dt; 
    initialWalkingVelocity = walkingVelocity; 

    if(isWalking) 
    { 
     if(!isJumping) 
      walkingVelocity = walkingVelocity + walkingAcceleration; 

     else 
      walkingVelocity = walkingVelocity + Vector(walking acceleration constant * dt, 0); 
    } 

    // Compute jump/fall velocity 
    if(!isOnPlatform) 
    { 
     initialVerticalVelocity = verticalVelocity; 
     verticalVelocity  = verticalVelocity + verticalAcceleration * dt; 
    } 

    // Add walking velocity 
    position = position + (walkingVelocity + initialWalkingVelocity) * 0.5 * dt; 

    //Add jump/fall velocity if not on a platform 
    if(!isOnPlatform) 
     position = position + (verticalVelocity + initialVerticalVelocity) * 0.5 * dt; 

    verticalAcceleration.y = Gravity * dt; 
} 
+0

你能解釋一下「dt」是什麼嗎? – 2010-06-18 16:43:42

+0

自上一幀 – 2010-06-18 23:55:32

+0

以來的時間通過從所有加速度中去除時標(dt)來修正它。 – 2010-06-19 05:53:38

回答

1

你應該Fix your Timestep,,如果你在任何地方都乘以dt,一切都將取決於該值,使你失去控制。