void Update()
    {
        int index = (int)phaseBoss;

        switch (index)
        {
        case 0:
            countDownStart -= Time.deltaTime;
            if (countDownStart < 0)
            {
                phaseBoss = PhaseBoss.Move;
            }
            break;

        case 1:
            AudioManager.Instance.StopSound(1);
            AudioManager.Instance.PlaySound(2);
            if (transform.position.y > yTarget)
            {
                transform.position += new Vector3(0.0f, -moveSpeedY) * Time.deltaTime;
            }
            else
            {
                phaseBoss = PhaseBoss.PhaseOne;
            }
            break;

        case 2:
            shotCounter -= Time.deltaTime;
            if (!moveRight)
            {
                transform.position = Vector3.MoveTowards(transform.position, new Vector3(-xTarget, yTarget), Time.deltaTime * moveSpeedX);
                if (shotCounter <= 0)
                {
                    for (int i = 0; i < 2; i++)
                    {
                        AudioManager.Instance.PlaySound(8);
                        Instantiate(lasers[Random.Range(0, 2)], lasersPoint[i].position, lasersPoint[i].rotation);
                    }
                    shotCounter = shotDelay;
                }
                if (transform.position.x <= -xTarget)
                {
                    moveRight = true;
                }
            }
            else
            {
                transform.position = Vector3.MoveTowards(transform.position, new Vector3(xTarget, yTarget), Time.deltaTime * moveSpeedX);
                if (shotCounter <= 0)
                {
                    for (int i = 2; i < 4; i++)
                    {
                        AudioManager.Instance.PlaySound(8);
                        Instantiate(lasers[Random.Range(0, 2)], lasersPoint[i].position, lasersPoint[i].rotation);
                    }
                    shotCounter = shotDelay;
                }
                if (transform.position.x >= xTarget)
                {
                    moveRight = false;
                }
            }
            if (durableShield <= 0)
            {
                Destroy(Shields);
                GM.Instance.AddScore(200);
                phaseBoss = PhaseBoss.PhaseTwo;
            }
            break;

        case 3:
            shotCounter -= Time.deltaTime;
            if (!moveRight)
            {
                transform.position = Vector3.MoveTowards(transform.position, new Vector3(-xTarget, yTarget), Time.deltaTime * moveSpeedX * 1.8f);
                if (transform.position.x <= -xTarget)
                {
                    moveRight = true;
                }
            }
            else
            {
                transform.position = Vector3.MoveTowards(transform.position, new Vector3(xTarget, yTarget), Time.deltaTime * moveSpeedX * 1.8f);
                if (transform.position.x >= xTarget)
                {
                    moveRight = false;
                }
            }
            if (shotCounter <= 0)
            {
                for (int i = 0; i < lasersPoint.Length; i++)
                {
                    AudioManager.Instance.PlaySound(8);
                    Instantiate(lasers[Random.Range(0, 2)], lasersPoint[i].position, lasersPoint[i].rotation);
                }
                shotCounter = shotDelay;
            }
            if (bossLife <= 0)
            {
                GM.Instance.AddScore(350);
                AudioManager.Instance.PlaySound(5);
                gameObject.SetActive(false);
                GM.Instance.FinishGame();
            }
            break;
        }
    }
 void Start()
 {
     phaseBoss = PhaseBoss.Start;
 }