Я точно настроил физику своего 2-го платформера, и когда я добавил замедленное движение, я понял, что оно испорчено.
У меня проблема в том, что по какой-то причине физика все еще зависит от частоты кадров. Поэтому, когда я сокращал время, все силы тоже уменьшались. Таким образом, сила прыжка уменьшается, т.е. в замедленном режиме персонаж прыгает по вертикали на меньшую высоту, а сила гравитации также уменьшается, поэтому персонаж летит дальше в воздухе, не падая.
Я отправляю функцию обновления в надежде, что кто-то может помочь мне (я разделил вертикальные (прыжок, гравитация) и ходьбу (произвольное направление ходьбы на платформе - платформы могут быть под любым углом) векторы:
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;
}