简体   繁体   中英

Check if a set of objects is moving Unity 3D

I have several objects with the same tag, and I want to check if they are moving or not, to call a function when they're not moving. So I used the code bellow, but the aremoving is always false even when some objects still moving! Do you know what's wrong in my code?

Script:

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);
    }

Write the code like this

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; 
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM