一个物体与另一个物体的统一碰撞
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发生碰撞。这样,其他对象甚至不会触发碰撞,您无需构建逻辑来忽略它。
我有一个代码,我需要当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发生碰撞。这样,其他对象甚至不会触发碰撞,您无需构建逻辑来忽略它。