一个对象与另一个对象的统一碰撞



我有一个代码,我需要当player_对象与bomb标签接触对象时,发生以下动作,但是当bg_对象与bomb标签接触对象时,不应该发生任何事情,如何编写?

public class Player_ : MonoBehaviour{
public GameObject player_;
public GameObject bg_;
public static bool lose = false;
void Awake(){
lose = false;
}
void OnTriggerEnter2D (Collider2D other){
if (other.gameObject.tag == "bomb")
lose = true;
player_.gameObject.SetActive (false);
bg_.gameObject.SetActive (false);
}
}

虽然标签可以满足您的需要,但我想提醒您不要使用它们。

使用基于图层的碰撞,并使用图层而不是标签。这实际上做了同样的事情,但它实际上完全阻止了物理相互作用,防止了浪费的计算能力。

与其给播放器添加标签,不如创建一个图层" player "和一个"交互性"层;(或"Bombs"如果你只让玩家与炸弹互动)。分别设置图层,并修改碰撞矩阵,以便只有Player上的东西才能与Interactables发生碰撞。这样,其他对象甚至不会触发碰撞,你也不需要构建逻辑来忽略它。

在你的炸弹上,你可以有一个OnTriggerEnter2D,当有东西触发它时,你只需查看标签并做适当的反应。

void OnTriggerEnter2D (Collider2D other){
if (other.gameObject.tag == "Player")
{
Do Something();
}
}

这样,当其他东西触发它时,什么也不会发生

最新更新