Unity:如何同时处理多个碰撞器或触发器?

Unity : How to deal with many colliders or triggers at once?

在unity中,我们可以用trigger来处理碰撞和定位。但是,我找不到任何有关处理触发器或对撞机的复数条件的信息。

比如有两个球连在一个圆柱体上,我应该如何控制受两个不同球体影响的圆柱体的状态。

您可以使用如下简单的脚本解决问题:

using UnityEngine;

public class TriggerScript : MonoBehaviour {

    public GameObject sphereA, sphereB;
    MeshRenderer meshA, meshB, meshC;
    Color colorA, colorB;

    void Awake() {
        meshA = sphereA.GetComponent<MeshRenderer>();
        meshB = sphereB.GetComponent<MeshRenderer>();
        meshC = GetComponent<MeshRenderer>();
        colorA = meshA.material.color;
        colorB = meshB.material.color;
    }

    void OnTriggerStay(Collider other) {
        // Check which sphere is "other"
        if (other.gameObject == sphereA) {
            colorA = meshA.material.color;
        }
        if (other.gameObject == sphereB) {
            colorB = meshB.material.color;
        }

        // Check which are the spheres' colors and change cylinder color accordingly
        if (colorA == Color.black && colorB == Color.white ||
            colorA == Color.white && colorB == Color.black) {
            meshC.material.color = Color.gray;
        }
        else if (colorA == Color.black && colorB == Color.black) {
            meshC.material.color = Color.black;
        }
        else if (colorA == Color.white && colorB == Color.white) {
            meshC.material.color = Color.white;
        }
    }
}

将脚本附加到圆柱体游戏对象,通过 Inspector 提供球体的引用,仅此而已。你可以根据你想要完成的ofc将OnTriggerStay更改为OnTriggerEnter。 请记住,球体只能具有 Collider 分量,但圆柱体也必须具有 Rigidbody 分量。