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