作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一辆车,在加速时我希望速度“缓慢”地增加..
在查看了几个网站后,我得出的结论是可以使用 SmoothStep 方法来做到这一点?
我非常了解如何移动纹理和其他东西,因此使用 smoothstep 来增加 float 或类似内容的值的示例将非常有帮助!
提前致谢:)
我觉得遗憾的是 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,具体取决于您的游戏状态使用的维数。另外,请注意这种形式的集成容易出现轻微的数学错误。
关于c# - XNA MathHelper.SmoothStep?它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/590462/
我有一辆车,在加速时我希望速度“缓慢”地增加.. 在查看了几个网站后,我得出的结论是可以使用 SmoothStep 方法来做到这一点? 我非常了解如何移动纹理和其他东西,因此使用 smoothstep
我是一名优秀的程序员,十分优秀!