Unity:如何同时处理多个碰撞器或触发器?
Unity : How to deal with many colliders or triggers at once?
在unity中,我们可以用trigger来处理碰撞和定位。但是,我找不到任何有关处理触发器或对撞机的复数条件的信息。
比如有两个球连在一个圆柱体上,我应该如何控制受两个不同球体影响的圆柱体的状态。
- 如果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 提供球体的引用,仅此而已。你可以根据你想要完成的ofc将OnTriggerStay
更改为OnTriggerEnter
。
请记住,球体只能具有 Collider
分量,但圆柱体也必须具有 Rigidbody
分量。
在unity中,我们可以用trigger来处理碰撞和定位。但是,我找不到任何有关处理触发器或对撞机的复数条件的信息。
比如有两个球连在一个圆柱体上,我应该如何控制受两个不同球体影响的圆柱体的状态。
- 如果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 提供球体的引用,仅此而已。你可以根据你想要完成的ofc将OnTriggerStay
更改为OnTriggerEnter
。
请记住,球体只能具有 Collider
分量,但圆柱体也必须具有 Rigidbody
分量。