Unity3d 在Unity 2D中设置最大水平移动速度,但不设置最大速度

Unity3d 在Unity 2D中设置最大水平移动速度,但不设置最大速度,unity3d,physics,Unity3d,Physics,我一直在互联网上寻找帮助设置我的角色的速度到一个最大值-基本上,给它的水平速度设置一个上限。到目前为止,我发现最好的事情是: rb.velocity = new Vector2(Mathf.Clamp(rb.velocity.x, -maxSpeed, maxSpeed), rb.velocity.y); 然而,这一点的主要问题是,这会阻止角色的实际速度超过maxSpeed设置为的任何值(比如4),这意味着如果,比如说,它被移动的对象击中,会推动它,使其水平速度超过4,则每当完成移动计算时,它

我一直在互联网上寻找帮助设置我的角色的速度到一个最大值-基本上,给它的水平速度设置一个上限。到目前为止,我发现最好的事情是:

rb.velocity = new Vector2(Mathf.Clamp(rb.velocity.x, -maxSpeed, maxSpeed), rb.velocity.y);

然而,这一点的主要问题是,这会阻止角色的实际速度超过maxSpeed设置为的任何值(比如4),这意味着如果,比如说,它被移动的对象击中,会推动它,使其水平速度超过4,则每当完成移动计算时,它都会重置为4。我要寻找的是一种可以防止角色在过去4秒时加速的东西,但它仍然允许角色在外力作用下移动。

我的想法是,仅在用户输入的情况下,如果速度还没有更高(由于外力),则只在需要主动设置速度的位置夹紧

差不多

if(Mathf.Abs(rb.velocity.x)
我的想法是,如果用户输入的
速度还不高(由于外力),则仅在需要主动设置
速度的位置夹紧

差不多

if(Mathf.Abs(rb.velocity.x)
您应该将夹钳放在移动角色的方法上。这只是夹紧对象作为一个整体的速度。你应该用移动角色的方法夹紧。这只是夹紧物体作为一个整体的速度。