private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.layer == LayerMask.NameToLayer("Box")) { if (collision.transform.position.y >= transform.position.y + 0.7f) { ItemBox box = collision.transform.GetComponent <ItemBox>(); if (box) { box.OnHeadbutted(); } } } if (collision.gameObject.layer == LayerMask.NameToLayer("Item")) { Item item = collision.transform.GetComponent <Item>(); if (item) { item.OnItemGot(this); } } // 被敌人Enemy碰到 if ((1 << collision.gameObject.layer & LayerMask.GetMask("Enemy", "Boss")) != 0) { // 如果在空中,要先检测是不是脚底踩到敌人 if (cc.curMoveStatus == MoveStatus.Air) { float w = 0.3f; if (transform.localScale.x > 1.1f) { w = 0.5f; } Collider2D[] colliders = Physics2D.OverlapBoxAll(groundCheck.position, new Vector2(w, 0.2f), 0, LayerMask.GetMask("Enemy", "Boss")); foreach (Collider2D c in colliders) { RoleDie rd = c.GetComponent <RoleDie>(); if (rd != null) { rd.Die(c.transform); // 反弹 rigid.velocity = new Vector2(rigid.velocity.x, 0); rigid.AddForce(new Vector2(0, 300)); } } if (colliders.Length > 0) { return; } } // 运行到这里说明没踩到敌人,碰撞死亡 dead = true; Invoke("ResetGame", 3); BGMusic.Instance.PlayDeadMusic(); } }