使Unity中的刚体大小恒定

时间:2016-06-30 04:24:08

标签: unity3d game-physics rigid-bodies

我试图将刚体的大小保持在3.5的恒定速度。我不希望它低于或高于此。

这是我到目前为止在FixedUpdate()

中所做的
m.group(1)

我知道我正确地实现了第一个 if(rb.velocity.magnitude > 3.5f) { Debug.Log("ABOVE"); rb.velocity = Vector2.ClampMagnitude(rb.velocity, 3.5f); } if(rb.velocity.magnitude < 3.5f) { Debug.Log("BELOW"); // Not sure if calculation below is correct rb.velocity = rb.velocity.normalized * 3.5f; } 语句(如果它超过3.5则为钳位)。我已经在网上搜索过,这是有些人建议的,如果它超出了预期的限制,就可以控制它的大小。

但是,我不确定我是否正确实现了第二个if语句(如果幅度低于3.5)。我找不到关于此的任何在线帖子/问题。

我的问题是:如果刚体速度低于所需速度,设定刚体速度的正确方法是什么?我已经测试过,只有当值超出限制时,夹紧才有效。

顺便说一下,我想保持目前的方向。我只是想改变/提高速度。我不确定使用if是否正确。

感谢任何帮助。还是物理/数学编程的新手。

1 个答案:

答案 0 :(得分:1)

您的计算是正确的。

您还可以执行xyLe_在评论中建议的内容并仅使用:

if(rb.velocity.sqrMagnitude != 3.5f*3.5f)
    rb.velocity = rb.velocity.normalized * 3.5f;

调用规范化有点耗时(它需要一个平方根)但如果你没有运行这个对象的数千个实例,你就不会注意到任何问题(我认为ClampMagnitude函数无论如何都需要一个平方根,并且不会更有效率)

修改:更正了有关评论的代码

相关问题