【问题标题】:Inaccuracy when calculating friction on object计算物体摩擦力时不准确
【发布时间】:2012-02-24 23:54:23
【问题描述】:

我正在学习如何在 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 左右的恒定值,太高而不受我的死区影响。这不会发生在负速度上。

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

【问题讨论】:

    标签: c# logic game-physics xna-4.0


    【解决方案1】:

    您的逻辑将立即反转 0.1 和 .2 之间值的摩擦变化。尝试添加“else”,这样您就不会立即撤消更改。

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

    【讨论】:

    • 当然。盯着代码看一段时间很容易错过。
    猜你喜欢
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多