unity2D的物理碰撞和非物理碰撞的认识

  物理碰撞就是精灵之间只碰撞不会穿越对方,非物理碰撞发生碰撞且相互穿越(注意:物理碰撞力过大也会相互穿越)。在unity碰撞中,须有boxcollider组件和主动碰撞方须有rigibody2d组件,即可碰撞。在所有Collider上有一个Is Trigger 的boolean型参数。当发生碰撞反应的时候,会先检查此属性。当激活此选项时,会调用碰撞

双方的脚本 OnTrigger***方法, 反之,脚本方面没有任何反应。物理碰撞和非物理碰撞的方法有下:

void OnCollisionEnter2D( Collision2D collision) 当进入碰撞器
void OnCollisionExit2D( Collision2D collision ) 当退出碰撞器
void OnCollisionStay2D( Collision2D collision )  当逗留碰撞器

void OnTriggerEnter2D( Collider2D other )当进入触发器
void OnTriggerExit2D( Collider2D other )当退出触发器
void OnTriggerStay2D( Collider2D other )当逗留触发器

下面讨论物理碰撞检测消息的方法;

if判断

 void OnCollisionEnter2D(Collision2D collision)
    {

        Debug.Log(collision.gameObject.name);
        if(collision.gameObject.name=="Role_b")//if(collision.gameObject.tag=="Role_b")
      {
      
                //销毁对方 
            //Destroy(GameObject.Find("Role_b"));
     }
    }

switch判断

 void OnCollisionEnter2D(Collision2D collision)
    {   
         
        switch (collision.gameObject.name)
        {
            case "Role_b":
               Debug.Log("1111111111111");    
                break;

            case "Role_a":
                Debug.Log("22222222222");
                //GameObject.Find("Role_7").GetComponent().enabled = false;                
               break;
        
       }

    }

以上可以测试运行。

你可能感兴趣的:(unity3d)