具有慢动作的2D平台重力物理

时间:2010-06-18 04:13:58

标签: game-physics

我很好地调整了我的2d平台物理,当我添加慢动作时,我意识到它已经搞砸了。

我遇到的问题是由于某种原因,物理学仍然依赖于帧率。因此,当我缩短经过的时间时,每个力量也会缩小。因此,跳跃力被缩小,意味着在慢动作中,角色跳跃垂直较小的高度,重力也会缩小,因此角色在空中进一步下降而不会下降。

我正在发送更新功能,希望有人可以在这里帮助我(我分离垂直(跳跃,重力)和行走(在平台上任意行走方向 - 平台可以是任何角度)向量):

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;
}

1 个答案:

答案 0 :(得分:1)

你应该Fix your Timestep,,如果你把dt到处增加,一切都将取决于那个值,让你失去控制。