Я учусь использовать платформу XNA в C # и борюсь с основной ошибкой при вычислении базовой формы трения.
Код для расчета трения:
//Check X deadzone movement
if (Velocity.X < 0.1f && Velocity.X > -0.1f)
{
Velocity.X = 0f;
}
else
{
//Friction Calculation
if (Velocity.X > 0) Velocity.X -= Friction;
if (Velocity.X < 0) Velocity.X += Friction;
}
//Check Y deadzone movement
if (Velocity.Y < 0.1f && Velocity.Y > -0.1f)
{
Velocity.Y = 0f;
}
else
{
//Friction Calculation
if (Velocity.Y > 0) Velocity.Y -= Friction;
if (Velocity.Y < 0) Velocity.Y += Friction;
}
Где
Friction = 0.2f;`
Моя проблема в том, что всякий раз, когда я перемещаю игрока вправо или вниз (в положительных направлениях), скорость «залипает», и на нее не влияет трение. Он остается на постоянном уровне около 0,4, слишком высоко, чтобы быть затронутым моей мертвой зоной. Это не происходит на отрицательных скоростях.
Это кажется простой ошибкой в моей логике, но я не могу понять, какая-нибудь помощь?