Exemplo n.º 1
0
    //플레이어 덮침
    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;                                         //골목 스타트 상태로 변경
        }
    }
Exemplo n.º 2
0
    //골목 안쪽으로 플레이어가 보일 때
    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());
            }
        }
    }