团结起来,我们可以用触发器来处理碰撞和位置。但是,我找不到任何有关处理触发器或对撞机的多个条件的信息。
例如,如果有两个球与一个气缸相连,我应该如何控制受两个不同球影响的气缸的状态。
- 如果 A 球为黑色,B 球为白色,则连接的圆柱体为灰色。
- 如果 A 和 B 都为黑色,则圆柱体为黑色。
- 如果 A 和 B 均为白色,则圆柱体为白色。
您可以使用这样的简单脚本来解决问题:
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
分量。