public virtual void Death(DeathFX deathFX, Vector3 deathPosition, GameObject killingPlayer = null)
    {
        if (ReplayManager.Instance.isReplaying)
        {
            return;
        }

        if (playerState != PlayerState.Dead && GlobalVariables.Instance.GameState == GameStateEnum.Playing)
        {
            if (deathFX == DeathFX.Explosion || deathFX == DeathFX.All)
            {
                playerFX.DeathExplosionFX(deathPosition);
            }

            if (deathFX == DeathFX.Particles || deathFX == DeathFX.All)
            {
                playerFX.DeathParticles(deathPosition);
            }

            if (killingPlayer)
            {
                playerThatHit = killingPlayer.GetComponent <PlayersGameplay>();
            }

            StartCoroutine(DeathCoroutine());
        }
    }