void Update()
 {
     if (player.transform.position.x > transform.position.x)
     {
         GetComponent <SpriteRenderer>().flipX = true;
     }
     else
     {
         GetComponent <SpriteRenderer>().flipX = false;
     }
     if (state == AlienBossState.FollowingPlayer)
     {
         Vector2 move = new Vector2(player.transform.position.x - transform.position.x, player.transform.position.y - transform.position.y).normalized;
         rb.velocity = move * speed;
         if (Time.time > nextRush)
         {
             BeginRush();
         }
     }
     else if (state == AlienBossState.OnRush)
     {
         Vector3 screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(UnityEngine.Screen.width, UnityEngine.Screen.height, Camera.main.transform.position.z));
         if (Mathf.Abs(transform.position.x) > screenBounds.x ||
             Mathf.Abs(transform.position.y) > screenBounds.y)
         {
             Vector2 newTargetPosition = new Vector2(screenBounds.x + 50, Random.Range(0, screenBounds.y));
             if (targetPosition.x > 0)
             {
                 newTargetPosition.x *= -1;
             }
             if (targetPosition.y > 0)
             {
                 newTargetPosition.y *= -1;
             }
             targetPosition = newTargetPosition;
         }
         Vector2 move = new Vector2(targetPosition.x - transform.position.x, targetPosition.y - transform.position.y).normalized;
         rb.velocity = move * speed;
         if (Time.time - rushStart > 10.0f)
         {
             state    = AlienBossState.FollowingPlayer;
             speed    = 100.0f;
             nextRush = Time.time + 15.0f;
         }
     }
 }
    void BeginRush()
    {
        state = AlienBossState.OnRush;
        speed = 1000.0f;
        Vector3 screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(UnityEngine.Screen.width, UnityEngine.Screen.height, Camera.main.transform.position.z));

        targetPosition = new Vector2(screenBounds.x + 50, Random.Range(0, screenBounds.y));
        if (Random.Range(0, 2) == 1)
        {
            targetPosition.x *= -1;
        }
        if (Random.Range(0, 2) == 1)
        {
            targetPosition.y *= -1;
        }
        rushStart = Time.time;
    }
    IEnumerator Start()
    {
        Alien alien = DataBase.ins.XmlDataBase.alienDB.list[0];

        state = AlienBossState.FollowingPlayer;

        resistance = alien.resistance;
        nextRush   = Time.time + 15.0f;

        rb = GetComponent <Rigidbody2D>();
        Vector3 move = new Vector3(0, 0, 0);

        speed       = 100;
        rb.velocity = move * speed;
        Sprite sp = Resources.Load <Sprite>("Sprites/" + alien.texture);

        Debug.Log("texture: " + alien.texture);
        GetComponent <SpriteRenderer>().sprite = sp;
        Destroy(GetComponent <PolygonCollider2D>());
        yield return(new WaitForFixedUpdate());

        gameObject.AddComponent <PolygonCollider2D>();
        GetComponent <PolygonCollider2D>().isTrigger = true;
        gameObject.transform.localScale *= alien.dimensions.width / sp.rect.width;

        Debug.Log("Boss Spawned");
        //
        Vector3 screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(UnityEngine.Screen.width, UnityEngine.Screen.height, Camera.main.transform.position.z));

        Debug.Log("scren anchura " + UnityEngine.Screen.width);
        Debug.Log("posution alien " + gameObject.transform.position);


        alienRedBar.gameObject.SetActive(true);
        alienGreenBar.gameObject.SetActive(true);
        heartEnemy.gameObject.SetActive(true);

        alienGreenBar.transform.position = new Vector3(UnityEngine.Screen.width - 650, UnityEngine.Screen.height - 40, 1);
        alienRedBar.transform.position   = new Vector3(UnityEngine.Screen.width - 650, UnityEngine.Screen.height - 40, 1);
        heartEnemy.transform.position    = new Vector3(UnityEngine.Screen.width - 670, UnityEngine.Screen.height - 40, 1);

        StartCoroutine(ShootRoutine(0.0f, 1.0f));
    }