检查一组对象是否正在移动Unity 3D

时间:2019-02-09 16:14:21

标签: c# unity3d

我有几个带有相同标签的对象,并且我想检查它们是否在移动,以在它们不移动时调用函数。因此,我使用了下面的代码,但是即使某些对象仍在移动,但aremoving总是错误的!您知道我的代码有什么问题吗?

脚本:

bool aremoving;

void LateUpdate()
    {
        GameObject[] Cubes = GameObject.FindGameObjectsWithTag("Cube");
        foreach (GameObject Cube in Cubes)
        {
            if (Cube.GetComponent<Rigidbody>() == null)
            {
                continue;
            }
            if (Cube.GetComponent<Rigidbody>().velocity.magnitude > 0.01)
            {
                aremoving = true;
            }
            if (Cube.GetComponent<Rigidbody>().velocity.magnitude <= 0.01)
            {
                aremoving = false;
            }
        }
        Debug.Log("Cubes moving: " + aremoving);
    }

1 个答案:

答案 0 :(得分:1)

这样写代码

bool aremoving;

void LateUpdate()
{
    GameObject[] Cubes = GameObject.FindGameObjectsWithTag("Cube");
    foreach (GameObject Cube in Cubes)
    {
        if (Cube.GetComponent<Rigidbody>() == null)
        {
            continue;
        }
        if (Cube.GetComponent<Rigidbody>().velocity.magnitude > 0.01f)
        {
            aremoving = true;
        }
    Debug.Log("Cubes moving: " + aremoving);
    aremoving  = false; 
}