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