0

团结起来,我们可以用触发器来处理碰撞和位置。但是,我找不到任何有关处理触发器或对撞机的多个条件的信息。

例如,如果有两个球与一个气缸相连,我应该如何控制受两个不同球影响的气缸的状态。

  • 如果 A 球为黑色,B 球为白色,则连接的圆柱体为灰色。
  • 如果 A 和 B 都为黑色,则圆柱体为黑色。
  • 如果 A 和 B 均为白色,则圆柱体为白色。

在此处输入图像描述

4

1 回答 1

0

您可以使用这样的简单脚本来解决问题:

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 提供球体的引用,仅此而已。您可以根据您想要完成的内容更改OnTriggerStay为ofc。OnTriggerEnter请记住,球体只能有Collider分量,但圆柱体也必须有Rigidbody分量。

于 2017-06-05T18:28:52.620 回答