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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查刚体是否在移动?相关的知识,希望对你有一定的参考价值。

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

我在下面添加了我的代码片段,但是当游戏对象落在某个区域时,基本上会触发更新功能。在那一点上,我在一根绳子上接触一个刚体,看它是否在移动。对于使用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");
    }
}
答案

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

以上是关于如何检查刚体是否在移动?的主要内容,如果未能解决你的问题,请参考以下文章

unity里面translate是否可以无视碰撞

unity3d/2d刚体addforce如何才能立即停下来,我人物移动每次都会滑行一会

cocos2dx 3.X刚体update穿透问题。刚体A在update中通过摇杆移动,设置的和刚体

cocos2dx 3.X刚体update穿透问题。刚体A在update中通过摇杆移动,设置的和刚体

unity2d刚体不能用translate移动吗

ARKit - 如何沿识别的表面移动物体?