C# 转向行为工作得太快

C# 转向行为工作得太快,c#,xna,artificial-intelligence,C#,Xna,Artificial Intelligence,我试图在我的XNA游戏中实现方向盘行为,大部分情况下都是这样,但我可以用手来处理一些小事情。这些行为非常有效,我的问题在于更新的时间和规模 (我正在使用SharpSteer(目前几乎完全如此),可以在这里找到: ) Update()方法是我正在努力的地方。目前我正在使用此方法(直接来自SharpSteer) 这是可行的,但是帧与帧之间的变化是巨大的,这是由于经过的时间乘数(我认为SharpSteer使用它自己的游戏时钟,而不是游戏时间,我使用的是游戏时间) 我正在寻找一种方法来大大降低速度,并在

我试图在我的XNA游戏中实现方向盘行为,大部分情况下都是这样,但我可以用手来处理一些小事情。这些行为非常有效,我的问题在于更新的时间和规模

(我正在使用SharpSteer(目前几乎完全如此),可以在这里找到:

)

Update()方法是我正在努力的地方。目前我正在使用此方法(直接来自SharpSteer)

这是可行的,但是帧与帧之间的变化是巨大的,这是由于经过的时间乘数(我认为SharpSteer使用它自己的游戏时钟,而不是游戏时间,我使用的是游戏时间)

我正在寻找一种方法来大大降低速度,并在大于1.0f的范围内使用速度值

目前我使用的速度为1.0f,最大力为1.0f。我注意到速度始终是(0,0,0),elapsedTime是16(这称为每秒60次) smoothRate始终为0.4f,这也是因为elapsedTime太大


如果有人能帮我平衡一下车速,我将不胜感激

仔细查看代码,并用相应的测量单位标记/重命名与时间和速度相关的变量/参数。最有可能的情况是,你会发现,你要么是混合了秒和毫秒,要么是某种距离/每秒不匹配

样本名称:

public void ApplySteeringForce(Vector3 force, float elapsedTimeInSeconds)
Vector3 newVelocity = Velocity; // Pixel per Millisecond

增加质量将抑制(减缓)进入方法的相同力的加速度。是否确定已设置适当的质量值

还有,你的速度是每秒的单位吗?如果是,则16毫秒的运行时间应为0.016

public void ApplySteeringForce(Vector3 force, float elapsedTimeInSeconds)
Vector3 newVelocity = Velocity; // Pixel per Millisecond