将事件分配给所有游戏对象的正确方法

时间:2015-12-22 10:30:51

标签: c# events unity3d

我的游戏对象里面的十个立方体相互撞击,现在我想要检测OnTriggerEnter。这样做的正确方法是什么?

我可以做这样的事情(下面的脚本)并将其分配给每个gaemobject。这不是一个单调乏味的方法吗?

&pt

2 个答案:

答案 0 :(得分:0)

您可以检查对撞机游戏对象是否有任何识别标签,然后执行任何代码。例如,你可以降低敌人的HP,如果它达到0则摧毁它,依此类推。

据我所知,使用它完全没问题。过去为我工作过。

void OnTriggerEnter(Collider c) {
     if(c.gameObject.tag == "Player"){


        /* Whatever you want to do when 
        "Player" enters the collider goes here... */

     }

}

PS:坚持你的十个立方体的例子,你可以拥有一个" Cube"为他们添加标签并检查它 - 然后在" Cube"标记的gameobject进入你的对撞机。

答案 1 :(得分:0)

这是做到这一点的方法。原因是你要检查每个盒子是否发生碰撞。如果您只想要一种方法,那么您只能拥有一个方框。

但您也可以在几行中完成,因此您无需手动添加它们。

public class CollisionController:MonoBehaviour{
    private void Awake(){
       foreach(Transform t in transform){
           if(t == this.transform) { continue; }
           t.gameObject.AddComponent<CollisionMethod>();
       }
    }
}

这是包含碰撞方法的脚本。

public class CollisionMethod:MonoBehaviour{
    void OnTriggerEnter(Collider c) {
        Debug.Log("hit");
    }
}