Ejemplo n.º 1
0
    void Move()
    {
        //방향계산
        dir = target.position - this.transform.position;
        dir.Normalize();

        if (dir.x >= 0.9f || dir.x <= -0.9f)
        {
            //오른쪽인경우
            if (dir.x >= 0)
            {
                aniState   = ANI_STATE.E_ML;
                checkRight = true;
            }
            else
            {
                aniState = ANI_STATE.E_ML;
                //왼쪽인경우
                checkRight = false;
            }
        }
        else
        {
            if (dir.z > 0)
            {
                //위로
                aniState = ANI_STATE.E_MU;
            }
            else if (dir.z <= 0)
            {
                //아래로
                aniState = ANI_STATE.E_MD;
            }
        }
    }
Ejemplo n.º 2
0
    void Update()
    {
        // 리지드바디 안 튕기게
        if (Rigid.velocity != Vector3.zero)
        {
            Rigid.velocity = Vector3.zero;
        }

        // 갓모드 토글
        if (Input.GetKeyDown(KeyCode.F2))
        {
            GodMode = !GodMode;
        }

        // 이동
        if (IsBlinked == false && (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.D)))
        {
            NextState = ANI_STATE.Move;
            Move();

            // 블링크(우클릭)
            if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(1))
            {
                BlinkUse();
            }
        }
        else // 기본
        {
            NextState = ANI_STATE.Idle;

            // 블링크 딜레이
            if (IsBlinked)
            {
                Blink();
            }
        }

        // 폭탄
        if (Input.GetKeyDown(KeyCode.Q) && IsBomb == false)
        {
            if (BombCount > 0)
            {
                Bomb();
            }
        }

        // 애니메이터
        PlayAnimator();

        // 무적시간 계산
        if (InvincibleTimeCount != 0)
        {
            Invincible();
        }

        // 피격점 보여줄지 말지
        HitPointCheck();
    }
Ejemplo n.º 3
0
    // 애니메이터 재생
    void PlayAnimator()
    {
        // 애니메이션 변경
        if (PrevState != NextState)
        {
            PrevState = NextState;
            PlayerAnimator.SetInteger("state", (int)PrevState);
        }

        if (PrevState == ANI_STATE.Idle) // 멈춰있는 상태
        {
            switch (Way)
            {
            case 8:     // ↑
                PlayerAnimator.Play("Idle", -1, 0.4f);
                break;

            case 9:     // ↗
            case 7:
                PlayerAnimator.Play("Idle", -1, 0.8f);
                break;

            case 6:     // →
            case 4:
                PlayerAnimator.Play("Idle", -1, 0.2f);
                break;

            case 3:    // ↘
            case 1:
                PlayerAnimator.Play("Idle", -1, 0.6f);
                break;

            case 2:     // ↓
                PlayerAnimator.Play("Idle", -1, 0f);
                break;
            }
        }
        else if (PrevState == ANI_STATE.Move) // 이동이면 방향값 전달
        {
            if (Way == 1 || Way == 4 || Way == 7)
            {
                Way += 2;                                   // 오른쪽 보는 값
            }
            PlayerAnimator.SetInteger("way", Way);
        }
    }
Ejemplo n.º 4
0
 void SetAttackPattern()
 {
     //공격패턴판단(데미지받은것기준)//히트수계산시간
     currPatCheck += Time.deltaTime;
     //패턴1기준
     //체력이 50이상일때
     if (count != 3)
     {
         if (CurrHP > MaxHP * 0.85)
         {
             //시간계산을 패턴체크보다 우선적으로함
             if (atPat12CurrTime > atPat12Check)
             {
                 AtPatRand();
             }
             if (currPatCheck < atPat1Check && atPat12CurrTime < atPat12Check)
             {
                 //데미지축적치이상일때
                 if (onDamagedCount > CheckPat1Dam)
                 {
                     //부채꼴
                     BulletSpawner.Instance.bulletState = 1;
                 }
                 else
                 {
                     //직선
                     BulletSpawner.Instance.bulletState = 0;
                 }
             }
             else
             {
                 onDamagedCount = 0;
                 currPatCheck   = 0;
             }
             //애니메이션1
             aniState = ANI_STATE.E_AP1;
         }
         else if (CurrHP <= MaxHP * 0.85 && CurrHP > MaxHP * 0.56)
         {
             if (atPat12CurrTime > atPat12Check)
             {
                 AtPatRand();
             }
             if (currPatCheck < atPat2Check && atPat12CurrTime < atPat12Check)
             {
                 //데미지축적치이상일때
                 if (onDamagedCount > CheckPat2Dam)
                 {
                     //원형
                     BulletSpawner.Instance.bulletState = 2;
                 }
                 else
                 {
                     //부채꼴
                     BulletSpawner.Instance.bulletState = 1;
                 }
             }
             else
             {
                 onDamagedCount = 0;
                 currPatCheck   = 0;
             }
             //애니메이션1
             aniState = ANI_STATE.E_AP1;
         }
         else if (CurrHP <= MaxHP * 0.56 && CurrHP > MaxHP * 0.27)
         {
             AtPatRand();
             aniState = ANI_STATE.E_AP2;
         }
         else if (CurrHP <= MaxHP * 0.27)
         {
             //페이즈2갔을때
             AtPatRand();
         }
     }
     else
     {
         //총알안뿌려줌
         BulletSpawner.Instance.bulletState = 10;
         if (atPatRand > 50)
         {
             GasterSpawner.Instance.patState      = 1;
             GasterSpawner.Instance.spawnTimePat1 = 0.5f;
         }
         else
         {
             GasterSpawner.Instance.patState      = 2;
             GasterSpawner.Instance.spawnTimePat2 = 0.1f;
         }
     }
 }