private void PlayerDied()
    {
        //If player died
        if (enemyType == EnemyType.NONE)
        {
            //Player Dead sound + Game Over sound
            StartCoroutine("PlayerGameOverSound");

            //Animate camera to die
            playerAnimator.StartDeadAnimation();

            //Make the enemies ignore the died player.
            List <GameObject> enemies = LayerHelper.FindGameObjectInLayer(Tags.ENEMY_TAG);

            for (int i = 0; i < enemies.Count; i++)
            {
                EnemyController enemyCtrl = enemies[i].GetComponent <EnemyController>();
                if (enemyCtrl != null)
                {
                    enemyCtrl.enabled = false;
                }
            }

            //Call enemy manager to stop spawning enemies
            EnemyManager.instance.StopSpawning();

            GetComponent <PlayerMovement>().enabled = false;
            GetComponent <PlayerAttack>().enabled   = false;
            GetComponent <WeaponManager>().GetCurrentSelectedWeapon().gameObject.SetActive(false);
        }

        else //if enemy died
        {
            navMeshAgent.isStopped  = true;
            navMeshAgent.velocity   = Vector3.zero;
            enemyController.enabled = false;

            enemyAnimator.Dead();

            //StartCoroutine
            StartCoroutine(EnemyDeadSound());

            //Enemy Manager spawn more enemies
            EnemyManager.instance.EnemyDied(enemyType);
        }

        if (tag == Tags.PLAYER_TAG)
        {
            Invoke("RestartGame", 9f);
        }
        else
        {
            Invoke("TurnOffGameObject", timeBeforeDeadEnemyDisappear);
        }
    }