一个物体与另一个物体的统一碰撞

Unity collision of one object with another

我有一个代码,我需要当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);

}

}

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

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

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

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

相反,利用 Layer Based Collision,并使用图层而不是标签。这有效地做了同样的事情,但它实际上完全阻止了物理交互,防止浪费计算能力。

与其向玩家添加标签,不如为“玩家”创建一个图层,为“可交互对象”(或“炸弹”,如果您只有玩家与炸弹互动)创建一个图层。分别设置图层,修改碰撞矩阵,只有Player上的东西才能和Interactables发生碰撞。这样,其他对象甚至不会触发碰撞,您无需构建逻辑来忽略它。