2010-06-18 73 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,一切都将取决于该值,使你失去控制。