我有一辆车,当加速时,我希望速度"慢慢"增加..
看了几个网站后我得出的结论是SmoothStep方法可以用来做到这一点?
我非常知道如何移动纹理和东西,所以使用smoothstep来增加浮点数或类似值的示例将非常有用!
提前致谢 :)
我认为很遗憾MSDN库中的所有方法都没有示例.
SmoothStep在这里不会帮到你.SmoothStep是一个双值插值函数.它做了类似于正弦插值的事情.它将在x = 0.5附近缓慢加速,然后减速到达(x = 1.0).
如下:
这是近似值,实际函数没有这些确切的数字.
是的,您可以使用x = 0..0.5来达到您想要的效果,但几乎无法控制加速度曲线.
如果你想真正加速汽车或任何其他物体,最好的办法就是自己跟踪加速度和速度.
class Car : GameComponent { public override void Update(GameTime time) { velocity += acceleration * time.ElapsedGameTime.TotalSeconds; position += velocity * time.ElapsedGameTime.TotalSeconds; } Vector3 position; Vector3 velocity; Vector3 acceleration; }
位置,速度和加速度是Vector2或Vector3,具体取决于您的游戏状态使用的维数.此外,请注意这种集成形式容易出现轻微的数学错误.
从这个文档中看起来像SmoothStep需要3个参数 - 你想要在它们之间移动的两个值和它们之间的数量,它们可能需要介于0和1之间.
所以说你有一个浮点数f,它从0线性增加到目标速度过了一段时间.而不是直接使用f作为速度,使用SmoothStep将如下所示:
float speed = MathHelper.SmoothStep(0, destSpeed, f/destSpeed);
这篇文档真的很糟糕.