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()); } } }
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)); } } }