1

我微调了我的 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;
}
4

1 回答 1

1

你应该修复你的时间步长,如果你在任何地方都乘以 dt,那么一切都将取决于那个值,让你失去控制。

于 2011-03-22T15:03:43.717 回答