private void OnCollisionEnter(Collision other) { float power = other.relativeVelocity.magnitude; Vector3 position = other.contacts[0].point; switch (other.transform.tag) { case "Destructable": Quaternion rotation = Quaternion.Inverse(Quaternion.LookRotation(other.contacts[0].normal)); GameManager <MainOperator> .Instance.effectManagerComponet.Collision(position, Vector3.one, rotation, power); Building building = other.transform.GetComponent <Building>(); GameManager <MainOperator> .Instance.cameraComponent.Shake(0.35f, 0.33f, 1.0f); GameManager <UIOperator> .Instance.managerComponent.UpdateScore(building.Explode(power * 100f, position), GameManager <MainOperator> .Instance.playerComponent.scoreValueMultiple); m_rigidbody.velocity = m_velocityOld; GameManager <SoundOperator> .Instance.managerComponent.CreateAudioSource(GameManager <SoundOperator> .Instance.sfxType[(__SFXType)Random.Range((int)__SFXType.Broken1, (int)__SFXType.Broken3)], position); break; case "Item": GameManager <MainOperator> .Instance.cameraComponent.Shake(0.11f, 0.33f, 1.0f); GameItem gameItem = other.transform.GetComponent <GameItem>(); gameItem.Explode(GameManager <MainOperator> .Instance.playerComponent, power * 100f, position); m_rigidbody.velocity = m_velocityOld; GameManager <SoundOperator> .Instance.managerComponent.CreateAudioSource(GameManager <SoundOperator> .Instance.sfxType[(__SFXType)Random.Range((int)__SFXType.Broken1, (int)__SFXType.Broken3)], position); break; } }