Пример #1
0
        void Update()
        {
            //임시 지구력 UI.
            fillGaugeBar.size = ep * 0.01f;

            #region <Sprint로 인한 EP증감>
            if (skillCtrl == State.idle || skillCtrl == State.attack)
            {
                if (ep < 0.0f)
                {
                    ctrlPossible.Sprint = false;
                }

                if (moveCtrl.GetMoveState() == T2.MoveCtrl.MoveState.Run ||
                    moveCtrl.GetMoveState() == T2.MoveCtrl.MoveState.Stop)
                {
                    EpIncrease();
                }
                else if (moveCtrl.GetMoveState() == T2.MoveCtrl.MoveState.Sprint)
                {
                    EpDecrease();
                }
            }
            #endregion

            controller.Move(-transform.up * Time.deltaTime * 20.0f);

            Transform camTr = Camera.main.transform;
            //화면의 중앙 벡터
            Vector3 centerPos = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width / 2, Screen.height / 2, 0.0f));

            //화면의 중앙에서 카메라의 정면방향으로 레이를 쏜다.
            Ray aimRay = new Ray(centerPos, camTr.forward);
            //카메라의 기준이 되는 피벗의 방향을 정하는 레이를 만든다.
            Ray pivotRay = new Ray(GameObject.FindGameObjectWithTag(Tags.CameraTarget).transform.position,
                                   GameObject.FindGameObjectWithTag(Tags.CameraTarget).transform.forward);

            Debug.DrawLine(aimRay.origin, aimRay.GetPoint(100.0f), Color.red);
            Debug.DrawLine(pivotRay.origin, pivotRay.GetPoint(100.0f), Color.blue);

            Ray fireRay = new Ray(trFire.position, trFire.forward);
            Debug.DrawLine(fireRay.origin, fireRay.GetPoint(100.0f), Color.yellow);
        }
Пример #2
0
        void Update()
        {
            moveFlag  = moveCtrfl.GetMoveFlag();
            moveState = moveCtrfl.GetMoveState();
            fSpeed    = moveCtrfl.GetMoveSpeed();

            if (mgr.GetState() != T2.Manager.State.Skill)
            {
                if (moveState == T2.MoveCtrl.MoveState.Stop)
                {
                    animator.SetBool("bIdle", true);
                }
                else if (moveFlag.forward || moveFlag.backward || moveFlag.right || moveFlag.left)
                {
                    animator.SetBool("bIdle", false);
                    animator.SetFloat("fSpeed", fSpeed);
                }
            }
            else
            {
                animator.SetBool("bIdle", false);
                animator.SetFloat("fSpeed", fSpeed);
            }


            #region <레거시 애니메이션>
            ////run상태 이동,
            //if(moveState == T2.MoveCtrl.MoveState.Run)
            //{

            //    if (moveFlag.forward) _animation.CrossFade(anim.aimForward.name, 0.15f);
            //    else if (moveFlag.backward) _animation.CrossFade(anim.aimBackward.name, 0.15f);
            //    else if (moveFlag.right) _animation.CrossFade(anim.aimRight.name, 0.15f);
            //    else if (moveFlag.left) _animation.CrossFade(anim.aimLeft.name, 0.15f);
            //    else _animation.CrossFade(anim.idle.name, 0.15f);

            //    if (basicAttack.isFire())
            //    {
            //        _animation.Play(anim.normalAttack.name);

            //    }
            //}
            ////sprint상태 이동,
            //else if (moveState == T2.MoveCtrl.MoveState.Sprint)
            //{

            //    if (moveFlag.forward) _animation.CrossFade(anim.runForward.name, 0.15f);
            //    else if (moveFlag.backward) _animation.CrossFade(anim.runForward.name, 0.15f);
            //    else if (moveFlag.right) _animation.CrossFade(anim.runForward.name, 0.15f);
            //    else if (moveFlag.left) _animation.CrossFade(anim.runForward.name, 0.15f);
            //    else _animation.CrossFade(anim.idle.name, 0.15f);
            //}
            ////이동상태 이외인 경우 ex(스킬 등의 애니메이션들)
            //else
            //{
            //    if (basicAttack.isFire())
            //    {
            //        _animation.CrossFade(anim.normalAttack.name, 0.15f);
            //    }
            //    //idle상태
            //    else
            //        _animation.CrossFade(anim.idle.name, 0.15f);
            //}
            #endregion
        }
Пример #3
0
        void Update()
        {
            if (mgr.GetCtrlPossible().Attack == false)
            {
                bFire       = false;
                attackTimer = 0.0f;
                return;
            }

            if (Input.GetMouseButton(0))
            {
                //첫 공격시에는 바로 공격 가능하고, 그 다음부터 연사 속도 적용.
                //if (!bFire)
                if (bFirstShot || !bFire)
                {
                    fRpmTime = 0.0f;
                }
                else
                {
                    fRpmTime = fRpmSpeed;
                }

                bFirstShot = false;

                //연사속도 조절.
                if (fRpmTimer > fRpmTime)
                {
                    Fire();
                    bFire = true;
                    animator.SetBool("bAttack", true);
                    fRpmTimer = 0.0f;
                }
                else
                {
                    fRpmTimer += Time.deltaTime;
                }
            }

            if (Input.GetMouseButtonUp(0))
            {
                fRpmTime    = 0.0f;
                bFirstShot  = true;
                attackTimer = 0.0f;
            }

            //공격하면 플레이어 이동상태를 일정 시간 동안 변경.
            if (bFire)
            {
                mgr.ChangeState(T2.Manager.State.attack);

                if (attackTimer > attackTime)
                {
                    //어택타임이 지난 공격종료 시점.
                    bFire = false;
                    animator.SetBool("bAttack", false);
                    attackTimer = 0.0f;

                    fRpmTimer = 0.0f;
                    fRpmTime  = fRpmSpeed;

                    mgr.ChangeState(T2.Manager.State.idle);
                }
                else
                {
                    attackTimer += Time.deltaTime;
                }

                //플레이어가 정지상태일 때,
                if (moveCtrl.GetMoveState() == MoveCtrl.MoveState.Stop)
                {
                    //플레이어 모델을 정면을 바라보게 한다.
                    trPlayerModel.rotation = Quaternion.Euler(0.0f, Camera.main.transform.eulerAngles.y, 0.0f);
                }

                //카메라 줌인
                fCamDist = Mathf.Lerp(fCamDist, fTargetDist, Time.deltaTime * fZoomSpeed);
                followCam.SetDist(fCamDist);
                fCamFOV         = Mathf.Lerp(fCamFOV, fTargetFOV, Time.deltaTime * fZoomSpeed);
                cam.fieldOfView = fCamFOV;
            }
            else
            {
                //카메라 줌아웃
                fCamDist = Mathf.Lerp(fCamDist, fOrizinDist, Time.deltaTime * fZoomSpeed * 0.2f);
                followCam.SetDist(fCamDist);
                fCamFOV         = Mathf.Lerp(fCamFOV, fOrizinFOV, Time.deltaTime * fZoomSpeed * 0.2f);
                cam.fieldOfView = fCamFOV;
            }
        }