private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.tag == "PlayerBullet")
     {
         Destroy(collision.gameObject);
         bodySR.material = matWhite;
         if (genEnemy.health <= 0)
         {
             currenState = GoblinStates.Die;
             gameObject.GetComponent <BoxCollider2D>().enabled = false;
         }
         else
         {
             counter     = TimetoTakeDamage;
             currenState = GoblinStates.TakeDamage;
             Invoke("ResetMaterial", 0.1f);
         }
     }
 }
    // Update is called once per frame
    void Update()
    {
        if (!theRoom.roomActive)
        {
            return;
        }

        Vector2 direction = playerTransform.position - transform.position;

        angle = (Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg);

        firePoint.rotation = Quaternion.Euler(0, 0, angle);


        if (playerTransform.position.x > transform.position.x)
        {
            gameObject.transform.rotation = Quaternion.Euler(0, 0, 0);
        }
        else
        {
            gameObject.transform.rotation = Quaternion.Euler(0, -180, 0);
        }

        /*
         * if (playerTransform.position.x > transform.position.x)
         * {
         *  gameObject.transform.rotation = Quaternion.Euler(0, 0, 0);
         *
         *  if (angle < maxAngle)
         *  {
         *      if(playerTransform.position.y > transform.position.y)
         *      {
         *          swordTransform.rotation = Quaternion.Euler(0, 0, angle);
         *      }
         *      else
         *      {
         *          swordTransform.rotation = Quaternion.Euler(0, 0, -angle);
         *      }
         *  }
         * }
         * else
         * {
         *  gameObject.transform.rotation = Quaternion.Euler(0, -180, 0);
         *
         *  if (angle < maxAngle)
         *  {
         *      if(playerTransform.position.y > transform.position.y)
         *      {
         *          swordTransform.rotation = Quaternion.Euler(0, 0, angle);
         *      }
         *      else
         *      {
         *          swordTransform.rotation = Quaternion.Euler(0,  0, -angle);
         *      }
         *  }
         *
         * }
         */

        switch (currenState)
        {
        case GoblinStates.Idle:

            ChangeAnimationState("RedGoblin_Idle");

            if (Vector2.Distance(transform.position, playerTransform.position) < triggerDistance)
            {
                currenState = GoblinStates.Walk;
            }
            break;

        case GoblinStates.Walk:
            ChangeAnimationState("RedGoblin_Walk");



            transform.position = Vector2.MoveTowards(transform.position, playerTransform.position, speed * Time.deltaTime);

            if (counter > 0)
            {
                counter -= Time.deltaTime;
            }

            allFirePoints.rotation = Quaternion.Euler(0, 0, angle + 90);

            if (Vector2.Distance(transform.position, playerTransform.position) < distanceToAttack)
            {
                if (counter <= 0)
                {
                    foreach (Transform t in shotgunFirePoints)
                    {
                        Instantiate(bullet, t.position, t.rotation);
                    }
                    counter = TimeBetweenAttacks;
                }
            }



            break;



        case GoblinStates.TakeDamage:
            ChangeAnimationState("RedGoblin_TakeDamage");

            if (counter > 0)
            {
                counter -= Time.deltaTime;
                Vector3 moveDirection = transform.position - playerTransform.position;
                moveDirection.Normalize();
                rb.velocity = moveDirection * speedWhenHit;
            }
            else
            {
                rb.velocity = Vector2.zero;
                counter     = TimeBetweenAttacks;
                currenState = GoblinStates.Walk;
            }

            break;

        case GoblinStates.Die:


            Invoke("ResetMaterial", 0.1f);     //jak dlugo ma byc bialy

            ChangeAnimationState("RedGoblin_TakeDamage");

            Vector3 movingWay = transform.position - playerTransform.position;
            movingWay.Normalize();
            rb.velocity = movingWay * speedWhenDie;
            Invoke("KillSelf", howLongAwayAfterDestroyed);

            CameraShaker.ShakeStrong(.20f, .25f);

            currenState = GoblinStates.PostMortem;

            break;

        case GoblinStates.PostMortem:

            break;
        }
    }