【发布时间】: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