void OnCollisionEnter(Collision collision) { var normal = collision.GetContact(0).normal; if (Time.time > _canExplodeTime) { if (collision.gameObject.layer == 11) { _canExplodeTime = Time.time + _explosionLimitDuration; _explosionsObject.TriggerExplosion(this.transform.position); _rigidbody.AddForce(normal * 100f, ForceMode.Impulse); } else if (collision.gameObject.layer == LayerMask.NameToLayer("Destructibles") || collision.gameObject.layer == LayerMask.NameToLayer("Ground")) { _canExplodeTime = Time.time + _explosionLimitDuration; _explosionsObject.TriggerExplosion(this.transform.position); } } else if (collision.gameObject.layer == 31) { _rigidbody.AddForce(new Vector3(0f, -5f, 0f), ForceMode.Impulse); } if (_rigidbody.velocity.sqrMagnitude < 2f) { normal.y += 0.5f; _rigidbody.AddForce(normal * 10f, ForceMode.Impulse); } }