private void OnCollisionEnter(Collision collision)
    {
        Collider myCollider  = collision.contacts[0].thisCollider;
        Collider hisCollider = collision.contacts[0].otherCollider;

        if (hisCollider.CompareTag("Wall"))
        {
            InteractionManager wallInteraction = collision.gameObject.GetComponent <InteractionManager>();
            if (wallInteraction != null)
            {
                wallInteraction.getInteraction()?.RunInteraction(gameObject);
            }
        }
        else if (myCollider.CompareTag("Balloon") && (hisCollider.CompareTag("Knife") || hisCollider.CompareTag("Damaging")))
        {
            if (!_isInvincible)
            {
                if (PlayerConfigManager.Instance._teamsEnabled)
                {
                    InputManager myInput  = GetComponent <InputManager>();
                    InputManager hisInput = hisCollider.GetComponentInParent <InputManager>();
                    if (hisInput != null && myInput._teamBlue != hisInput._teamBlue)
                    {
                        TakeDamage(myCollider);
                    }
                }
                else
                {
                    TakeDamage(myCollider);
                }
            }
        }
        else if (collision.gameObject.CompareTag("Player"))
        {
            Rigidbody rb = collision.gameObject.GetComponent <Rigidbody>();
            if (rb.velocity.magnitude >= 12)
            {
                Vector3 direction = transform.position - collision.transform.position;
                _controller.GetStunned(0.5f, new Vector2(direction.x, direction.z), 200);
            }
        }
        else if (myCollider.transform.parent.CompareTag("Player") && hisCollider.CompareTag("Damaging"))
        {
            Vector3 direction = Vector3.Normalize(hisCollider.transform.position - myCollider.transform.position);
            _controller.GetStunned(1.5f, new Vector2(-direction.x, -direction.z), 300);
        }
    }
    public void Explosion(GameObject obj)
    {
        foreach (GameObject _target in _players)
        {
            if (ReferenceEquals(obj, _target))
            {
                continue;
            }

            if (Vector3.Distance(_target.transform.position, obj.transform.position) < distance)
            {
                Vector3             direction   = Vector3.Normalize(_target.transform.position - obj.transform.position);
                NewRoombaController _controller = _target.GetComponent <NewRoombaController>();
                _target.GetComponent <PlayerVariables>().MaxSpeed = 100;
                _controller.GetStunned(1f, new Vector2(direction.x, direction.z), 2000);
                StartCoroutine(_controller.changeKnife());
            }
        }
    }