//플레이어 덮침 void MonCheckHoldDown() { m_Core.delayTime = 0.5f; //딜레이 설정 if (isFinTrace) //현재 추적을 끝내고 대기상태인지 { isFinTrace = false; //상태 변환 //확률에 따라 브레스 1과 점프 어택 중 택 1 Random.seed = (int)System.DateTime.Now.Ticks; //랜덤값의 시드를 무작위로 만든다 int randomChance = Random.Range(0, 1000); if (randomChance < 500) { alleySkillState = M_AlleySkillState.JumpAttack; StartCoroutine(M_JumpAttack.instance.UseSkill(alleyGateForwardPos)); //점프 어택으로 덮침 } else { alleySkillState = M_AlleySkillState.Breath; StartCoroutine(M_Breath.instance.UseSkill(alleyGateForwardPos)); //브레스로 덮침 } alleyState = M_AlleyState.Starting; //골목 스타트 상태로 변경 } }
//골목 안쪽으로 플레이어가 보일 때 void InSight() { //플레이어가 직선거리 상에 위치하고 있을 때, InSight 행동 실행 if (m_Core.CheckSight().isPlayerInStraightLine) { if (!isCheckingBreath_2) //브레스 2 사용 체크중이 아닐 때만 { //안쪽 지점에 플레이어가 충분히 가깝다면 브레스 사용 가능 거리 if (Vector3.Distance(alleyInCornerPos, m_Core.PlayerTr.position) < alleyBreathInCornerDist) { alleySkillState = M_AlleySkillState.AlleyBreath_1; StartCoroutine(M_AlleyBreath_1.instance.UseSkill(alleyInCornerPos)); //브레스 1 사용 } //플레이어가 앞발찍기 사거리 안 일 때는 else if (Vector3.Distance(m_Core.Tr.position, m_Core.PlayerTr.position) < alleyForeFootAttackDist) { alleySkillState = M_AlleySkillState.ForeFootPress; StartCoroutine(M_ForeFootPress.instance.UseSkill(m_Core.PlayerTr.position)); //앞발찍기 사용 } //브레스 사용 불가 앞발찍기 사용 불가 else { //스킬을 선택할 때 사용할 랜덤 값 설정 Random.seed = (int)System.DateTime.Now.Ticks; //랜덤값의 시드를 무작위로 만든다 int randomChance = Random.Range(0, 1000); if (randomChance < 500) { alleySkillState = M_AlleySkillState.Magic_1; StartCoroutine(M_Magic_1.instance.UseSkill(alleyInCornerPos)); //마법 1 사용 } else { alleySkillState = M_AlleySkillState.Magic_3; StartCoroutine(M_Magic_3.instance.UseSkill(alleyInCornerPos)); //마법 3 사용 } } } //추적 검토중 시야 안에 들어왔으면 추적 검토 중단 if (isCheckTracing) { isCheckTracing = false; } } //플레이어가 직선거리 상에 위치하지 않다면 (시야에서 벗어났다면) else { //브레스 2 사용 검토를 하지 않고 있었으면 if (!isCheckingBreath_2) { isCheckingBreath_2 = true; //브레스 2 사용 검토중 체크 isTrunOfCountInSight = true; //다음 차례는 InSight countTurn = 1; //이 자체로 이미 1회로 친다 StartCoroutine(CheckTimeToBreath_2()); //브레스 2 사용 검토 시작 } //추적 검토중이 아니면 추적 검토 시작 if (!isCheckTracing) { StartCoroutine(CheckTracing()); } } }