如何检查刚体是否在运动?

时间:2019-02-02 17:33:12

标签: unity3d

我想检查刚体是否在运动,并且我尝试了多种方法,但似乎不起作用。

我在下面添加了我的代码段,但是当游戏对象降落到特定区域时,更新功能基本上会触发。到那时,我进入绳索上的刚体以查看其是否在运动。对于使用imSleeping函数的片段即时消息,它确实起作用。任何人都知道一旦游戏对象降落到特定区域后如何检查它是否停止移动。

void Start()
{
    checkSleeping = false;
    joint = player.transform.Find("Joint 0").gameObject;
    jointRB = joint.GetComponent<Rigidbody2D>();
    Debug.Log("Found Him");
}


void Update()
{
    if (checkSleeping == true)
    {
        SleepingKonyaku();
    }
}

void OnTriggerStay2D (Collider2D col)
{
   if (col.tag == "Player" )
   {
        checkSleeping = true;
   }
}

void OnTriggerExit2D (Collider2D col)
{
    if (col.tag == "Player")
    {
        checkSleeping = false;
    }
}

void SleepingKonyaku ()
{        

    if(jointRB.IsSleeping())
    {
         Invoke ("RestartLevel", 2f);
         Debug.Log ("sleeping baby!!");
    }
    else
    {
        Debug.Log("Not Sleeping");
    }
}

1 个答案:

答案 0 :(得分:1)

当事物具有非零速度时,它被视为正在运动。这样做的:检查是否的大小(长度)的Rigidbody的速度为0或至少接近它。为了获得更高的性能,可以使用sqrMagnitude代替magnitude:这不涉及取值的平方根,这是一个相对缓慢的过程。