public void OnSpawn()
    {
        transform.position = Vector3.MoveTowards(transform.position, targetStartPosition, entranceSpeed * Time.deltaTime);

        if (transform.position == targetStartPosition)
        {
            bossState = SheepBossState.ON_HOLD_POSITION;
            ArrivedToPosition_Event();
        }
    }
 private void OnHoldPosition()
 {
     timer += Time.deltaTime;
     if (timer >= holdPositionForSeconds)
     {
         bossState     = SheepBossState.ON_ATTACK;
         canTakeDamage = true;
         timer         = 0;
     }
 }
    public void OnAttack()
    {
        UpdateShooting();
        UpdateMovement();

        if (health <= 0)
        {
            bossState = SheepBossState.KILLED;
            AudioManager.Instance.PlayAudioClip(onKilledSound);
        }
    }
    public override void Start()
    {
        base.Start();

        targetStartPosition = new Vector3(transform.position.x, transform.position.y - verticalDistanceToTravel, transform.position.z);

        player = FindObjectOfType <PlayerSlimy>();

        timer = 0;

        canTakeDamage = false;

        bossState = SheepBossState.ON_SPAWN;
        AudioManager.Instance.PlayAudioClip(onSpawnSound);
    }