首页>Game>source

当我释放钥匙时,我想立即停止(而不是立即停止),以免滑动.我不想使用 rb.isKinematic = false; 因为它就这么停止了 所以就像我想的那样:

x = GetAxisRaw("Horizontal");
z = GetAxisRaw("Vertical");
move = transform.right * x + transform.forward * z;
if (no inputs pressed)
{
   rb.AddForce(force * -maxSpeed); // maybe force will be the current velocity
}

我尝试过此方法,但似乎没有任何反应.因此,我想我需要一些改进

最新回答
  • 2021-1-2
    1 #

    您可以使用Unity的刚体对象修改drag属性,该属性用于修改对象在不受外力作用时减速的速度。

    >

    或者,或者如果您想躺下然后变脏,只需做

    velocity = velocity * 0.979;
    

    每当您想减慢对象速度时,都会更新一次.在0到1之间调整数值,以达到所需的减速速度。

    拖动是精确建模最困难的事情之一.我们使用许多不同的方程式对现实世界中的阻力进行建模(这变得极为复杂),但通常在游戏中进行实时仿真时,会使用高度简化的版本.在此讨论提供的示例中,您可以看到一些人(以及大多数物理学引擎)使用二次值对阻力进行建模.这也许更现实,但并不一定要获得您想要的结果。

    我相信他们在初学者物理Class程中教授的阻力的方程式通常为Fdrag = -v * b,其中b是某个常数.从本质上讲,这已经是您已经拥有的东西了,但是在游戏中并不是一个理想的解决方案.最后,选择最适合您的项目的方法。

  • unity:为什么我不能在此脚本中引用" targetVelocity"变量?
  • unity:Unity3D:从轨道发射弹丸