Esempio n. 1
0
        public virtual void Exit(T2.Skill.SkillCtrl skillCtrl)
        {
            bBeforeDelay = false;
            bAction      = false;
            bAfterDelay  = false;


            //쿨타임 시작.
            if (CoolTimeCoroutine != null)
            {
                StartCoroutine(CoolTimeCoroutine);
            }

            skillCtrl.mgr.ChangeState(T2.Manager.State.idle);

            //정상 종료 체크
            if (bUsing == false)
            {
                /*
                 * 정상종료 된다면 curSkill을 IdleSkill로 바로 대입한다.
                 * (changeSkillState()함수로 바꾸면 무한 뺑뺑이가 돌아버림...)
                 * IdleSkill에는 아무 기능도 없고 재설정해야하는 변수는 다른곳에서
                 * 이미 했기때문에 바로 대입해도 상관없을 듯 하다.
                 */
                if (skillCtrl.curSkill != T2.Skill.IdleSkill.GetInstance())
                {
                    skillCtrl.curSkill = T2.Skill.IdleSkill.GetInstance();
                }
            }
            else
            {
                bUsing = false;
            }
        }
Esempio n. 2
0
 public virtual void Enter(T2.Skill.SkillCtrl skillCtrl)
 {
     bBeforeDelay   = false;
     bAction        = false;
     bAfterDelay    = false;
     this.skillCtrl = skillCtrl;
 }
Esempio n. 3
0
 public override void Execute(T2.Skill.SkillCtrl skillCtrl)
 {
     //피격시 비정상 종료.
     if (skillCtrl.mgr.GetState() == T2.Manager.State.be_Shot)
     {
         Exit(skillCtrl);
     }
 }
Esempio n. 4
0
        public override void Exit(T2.Skill.SkillCtrl skillCtrl)
        {
            //사용 중 캔슬 되어 버릴 수 있으니 바뀐 값을 되돌려야 한다.
            //ec)만약 무적판정이 있다면, 여기서 다시 한번 꺼주어야 한다.
            oBlinkEffect.SetActive(false);

            base.Exit(skillCtrl);
        }
Esempio n. 5
0
        public override void Enter(T2.Skill.SkillCtrl skillCtrl)
        {
            //기본 변수 초기화.
            base.Enter(skillCtrl);
            base.skillCtrl = skillCtrl;
            base.skillCtrl.mgr.DecreaseSkillPoint(Manager.SkillType.EP, iDecPoint);
            base.bUsing            = true;
            base.CoolTimeCoroutine = CoolTimer(coolTime);

            skillCtrl.mgr.ChangeState(T2.Manager.State.Skill);
            //선딜 타이머 시작.
            StartCoroutine(BeforeDelayTimer(beforeDelayTime));
        }
Esempio n. 6
0
        public override void Enter(T2.Skill.SkillCtrl skillCtrl)
        {
            //기본 변수 초기화.
            base.Enter(skillCtrl);
            base.skillCtrl = skillCtrl;
            base.skillCtrl.mgr.DecreaseSkillPoint(PointType, iDecPoint);
            base.bUsing            = true;
            base.CoolTimeCoroutine = CoolTimer(coolTime);
            fOrizinFOV             = base.skillCtrl.cam.fieldOfView;

            skillCtrl.mgr.ChangeState(T2.Manager.State.Skill);

            //스킬이 끝난 후, 이동속도를 '처음'부터 가속하기 위해 moveState를 Stop으로 해 놓는다.
            base.skillCtrl.moveCtrl.SetMoveState(T2.MoveCtrl.MoveState.Stop);

            Transform camTr = Camera.main.transform;

            fInitCamRotY = camTr.eulerAngles.y;
            //화면의 중앙 벡터
            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(base.skillCtrl.trCamPivot.position, base.skillCtrl.trCamPivot.forward);

            //카메라에서 쏘는 레이가 부딪힌 위치를 바라보도록 한다.
            RaycastHit rayHit;
            //레이어 마스크 ignore처리 (-1)에서 빼 주어야 함
            int mask = (1 << LayerMask.NameToLayer(Layers.T_HitCollider)) | (1 << LayerMask.NameToLayer(Layers.Bullet));

            mask = ~mask;

            //총알이 날아갈 위치를 얻는다.
            if (Physics.Raycast(aimRay, out rayHit, fReach, mask))
            {
                vFireTargetPos = rayHit.point;
                //피벗레이는 화면상보다 좀더 앞에 있기 때문에 FollowCam스크립트의 Dist만큼 빼준다.
                vPivotTargetPos = pivotRay.GetPoint(rayHit.distance - base.skillCtrl.cam.GetComponent <FollowCam>().GetDist());
            }
            else
            {
                vFireTargetPos  = aimRay.GetPoint(fReach);
                vPivotTargetPos = pivotRay.GetPoint(fReach);
            }



            //선딜 타이머 시작.
            StartCoroutine(BeforeDelayTimer(beforeDelayTime));
        }
Esempio n. 7
0
        public override void Exit(T2.Skill.SkillCtrl skillCtrl)
        {
            //bUsing이 아직 true라면, 스킬이 도중에 캔슬 되는 경우이다.
            //스킬 캔슬로 인해 제대로 정리되지 않은 변수들을 초기화 시켜준다.
            if (bUsing == true)
            {
                this.StopAllCoroutines();
                //잔상을 모두 지운다.
                afterModelPool.AllDeActiveObject();
                afterImageCount = 0;
                iFlow           = 0;
                base.skillCtrl.animator.speed = 1.0f;
                base.skillCtrl.mgr.SetCtrlPossible(T2.Manager.CtrlPossibleIndex.MouseRot, true);
                //카메라 FOV원위치 시키는 코드 추가.
            }

            base.Exit(skillCtrl);
        }
Esempio n. 8
0
 public virtual void Execute(T2.Skill.SkillCtrl skillCtrl)
 {
 }