我试图将刚体的大小保持在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
是否正确。
感谢任何帮助。还是物理/数学编程的新手。
答案 0 :(得分:1)
您的计算是正确的。
您还可以执行xyLe_在评论中建议的内容并仅使用:
if(rb.velocity.sqrMagnitude != 3.5f*3.5f)
rb.velocity = rb.velocity.normalized * 3.5f;
调用规范化有点耗时(它需要一个平方根)但如果你没有运行这个对象的数千个实例,你就不会注意到任何问题(我认为ClampMagnitude
函数无论如何都需要一个平方根,并且不会更有效率)
修改:更正了有关评论的代码