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