计算物体上的摩擦力时不准确

本文关键字:摩擦力 不准确 计算 | 更新日期: 2023-09-27 18:25:56

我正在学习如何在C#中使用XNA框架,在计算摩擦的基本形式时,我遇到了一个基本错误。

计算摩擦力的代码为:

//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左右的恒定值,太高了,不会受到我的死区的影响。这种情况不会发生在负速度上。

这似乎是我逻辑中的一个简单错误,但我似乎无法理解,有什么帮助吗?

计算物体上的摩擦力时不准确

对于值在.1和.2之间的情况,您的逻辑将立即逆转摩擦力的变化。尝试添加"else",这样就不会立即逆转更改。

if (Velocity.X > 0) Velocity.X -= Friction;
else if (Velocity.X < 0) Velocity.X += Friction;