Пример #1
0
    public void GetTarget(int _damage, Transform _boss)
    {
        if (Lect.DistanceCheck(transform, playerTransform, hitDistance))
        {
            return;
        }

        if (!damageFlag)
        {
            // 플레이어에게 대미지
            if (!playerHit.IsInvincible)
            {
                playerHit.FrontBackCheck(playerTransform, _boss);
                playerHit.SwordHit(1);
                if (Flat.Instance.GetGround())
                {
                    playerHit.BeHitSword();
                }
                else
                {
                    playerHit.BeHitAir();
                }
                player.DecreaseHp(_damage);
            }

            if (!damageInterval.Equals(0) && !damageFlag)
            {
                damageFlag = true;
                StartCoroutine(TimeSpan());
            }
        }
    }
Пример #2
0
    private void Pattern1()
    {
        if (Lect.DistanceCheck(transform, player, rushDistance))
        {
            // 근접 딜레이 초기화
            meleeDelay = false;

            //조건 1. 플레이어와의 거리가 일정 이상일때
            if (currentArmor > 0)
            {
                // 조건1_1. 잔여 탄창 1 이상
                // 공격 활성화, 원거리 공격
                ActionControl(BossActions.Attack, true);
                action[BossActions.Attack].Action(true);

                // 가까운 위치로 이동, 이후 초기화
                StartCoroutine(WaitForNextAction(BossActions.Attack, BossActions.Move, true));
            }
            else
            {
                // 조건1_2. 잔여 탄창 0 이하
                // 이동 활성화, 가까운 위치로 이동, 재장전
                ActionControl(BossActions.Move, true);
                action[BossActions.Move].Action(true);
                ArmorRecharge();

                // 이후 초기화
                StartCoroutine(WaitForNextAction(BossActions.Move, BossActions.Finish, false));
            }
        }
        else
        {
            //조건 2. 플레이어와의 거리가 일정 미만일때
            if (meleeDelay)
            {
                // 조건2_1. 근접 딜레이가 있을 때
                // 이동 활성화, 먼 위치로 이동, 근접 딜레이 초기화
                ActionControl(BossActions.Move, true);
                action[BossActions.Move].Action(false);
                meleeDelay = false;

                // 먼 위치로 이동, 이후 초기화
                StartCoroutine(WaitForNextAction(BossActions.Move, BossActions.Move, false));
            }
            else
            {
                // 조건2_2. 근접 딜레이가 없을 때
                // 공격 활성화, 근접 공격, 근접 딜레이
                ActionControl(BossActions.Attack, true);
                action[BossActions.Attack].Action(false);
                meleeDelay = true;

                // 이후 초기화
                StartCoroutine(WaitForNextAction(BossActions.Attack, BossActions.Finish, false));
            }
        }
    }