分配多个刚体函数

Assign multiple Rigidbodies to function

我正在开发适用于特定葡萄酒盒的 Unity + Vuforia 应用程序。侧面有一个水龙头,当您单击它时,球体开始像液体一样从中掉落。我制作了一个脚本,只需点击一下水龙头即可为球体赋予重力。

[SerializeField] 
private Rigidbody sphere;
public Collider tap;

void Start()
{
    
    tap = GetComponent<Collider>();
}

void OnMouseDown()
{
    if (sphere.useGravity == false)
    {
        Debug.Log("Flows");
        sphere.useGravity = true;
        sphere.isKinematic = false;
    }

    else if (sphere.useGravity == true)
    {
        Debug.Log("Stops");
        sphere.useGravity = false;
        sphere.isKinematic = true;
    }
}

一个球体被分配给 sphere 变量,我想要的是让检查员有一个字段,我可以在其中输入我想要附加的球体数量,然后手动附加它们。而不是为每个领域创建一个变量。如果有其他方法,请告诉我。

总而言之:我想要几个刚体useGravity一次点击。

您可以像 public List<RigidBody> bodies 那样制作一个刚体列表,但是您需要使用 bodies.Add(rb) 将所有球体分配到列表中 您要实现的效果是在 OnMouseDown()函数被调用。它将使用 foreach

遍历列表
[SerializeField] 
private List<Rigidbody> bodies;
public Collider tap;

void Start()
{
    tap = GetComponent<Collider>();
}

void OnMouseDown()
{
    if (sphere.useGravity == false)
    {
        foreach (Rigidbody body in bodies)
        {
            body.useGravity = false;
            body.isKinematic = true;
        }
    }
}