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

问题描述 投票:0回答:1

我想检查刚体是否正在移动并且我尝试了多种东西,它似乎没有用。

我在下面添加了我的代码片段,但是当游戏对象落在某个区域时,基本上会触发更新功能。在那一点上,我在一根绳子上接触一个刚体,看它是否在移动。对于使用IsSleeping函数的片段,但它确实有效。任何人都知道我可以检查一旦游戏对象落在特定区域,以检查它是否停止移动。

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");
    }
}
unity3d
1个回答
1
投票

当它具有非零速度时,某些东西被认为是移动的。这样做:检查Rigidbody速度的大小(长度)是0还是至少接近它。对于一些额外的性能,你可以使用sqrMagnitude而不是magnitude:这不涉及取值的平方根,这是一个相对缓慢的过程。

© www.soinside.com 2019 - 2024. All rights reserved.