public void OnCollisionEnter(Collision collision) { //计算完全弹性碰撞更新移动方向 if (collision.gameObject.tag == "wall") { // StartCoroutine(Dunzhen()); ContactPoint cp = collision.contacts[0]; Vector3 rdir = Vector3.Reflect(tdir, cp.normal); rdir.y = 0; transform.DOScale(CalculateScaleMatrix(tdir, 0.5f) * tempscaleAnim, 0.1f);//碰撞时的缩放动画 tdir = rdir.normalized; //碰撞特效 Material wallmat = collision.gameObject.transform.GetComponent <Renderer>().material; if (wallmat != null) { wallmat.SetVector("_Center", cp.point); wallmat.SetFloat("_speed", 0f); wallmat.SetFloat("_GridEmission", 20f); wallmat.SetFloat("_width", 1f); } } else if (collision.gameObject.tag == "Enemy") { if (gameMode == GameMode.Normal) { if (!isGameOver) { //gameManager.showGlitchAndOver(2.0f, 2.0f); isGameOver = true; } } else if (gameMode == GameMode.Teaching) { //gameManager.showGlitch(2.0f); } gameManager.GameOver(); } if (audioSource) { audioSource.Play(); } }