Exemplo n.º 1
0
        private void CreateArea()
        {
            switch (mSkillCfg.mTargetType)
            {
            case SkillTargetType.Position:
            {
                CacheTransform.position = mCastCfg.mTargetPosition;
                break;
            }

            case SkillTargetType.Actor:
            {
                break;
            }
            }

            //area类型,1 每过一段时间起效一次 2 经过延迟后直接起效
            if (mSkillCfg.mTimer)
            {
                if (mSkillCfg.mEffectDelay > 0)
                {
                    var delayTimer = new DCDurationTimer(mSkillCfg.mEffectDelay, SetupAreaTimerStep2)
                                     .SetAutoDestroy(true).CreateNormal();
                    mTimerToDestroy.Add(delayTimer);
                }
                else
                {
                    SetupAreaTimerStep2();
                }
            }
        }
Exemplo n.º 2
0
        void SetupCdTimer()
        {
            mCdTimer = new DCDurationTimer(mSkillCfg.mCdDuration, OnCdEnd);
            mCdTimer.SetAutoDestroy(true);
            mCdTimer.CreateNormal();

            ViewGen.cdImage.fillAmount = 1;
            ViewGen.cdImage.enabled    = true;
        }
Exemplo n.º 3
0
 /// <summary>
 /// 开始播放cd倒计时
 /// </summary>
 public void OnKeySkillCreate(Skill skill)
 {
     mSkillCfg = skill.GetSkillCfg();
     if (mSkillCfg.mCdWaitDuration > 0)
     {
         mWaitCdTimer = new DCDurationTimer(mSkillCfg.mCdWaitDuration, OnWaitCdEnd);
         mWaitCdTimer.SetAutoDestroy(true);
         mWaitCdTimer.CreateNormal();
     }
 }
Exemplo n.º 4
0
 private void SetupAreaTimerStep2()
 {
     if (mSkillCfg.mAffectInterval > 0)
     {
         var intervalTimer = new DCDurationTimer(mSkillCfg.mAffectInterval, PostDoSkillEffect, -1)
                             .CreateNormal();
         mTimerToDestroy.Add(intervalTimer);
     }
     else
     {
         PostDoSkillEffect();
     }
 }
Exemplo n.º 5
0
        private void CreateBullet()
        {
            switch (mSkillCfg.mTargetType)
            {
            case SkillTargetType.Actor:
            {
                var transformTraceTarget = gameObject.AddComponent <TfTraceTarget>();
                transformTraceTarget.StartTrace(mCastCfg.mTargets[0].GetTransform(), SystemPreset.move_stop_distance, mSkillCfg.mSpeed);
                break;
            }

            case SkillTargetType.Position:
            {
                var arriveCmp = gameObject.AddComponent <TfArrivePosition>();
                arriveCmp.StartTrace(mCastCfg.mTargetPosition, SystemPreset.move_stop_distance, mSkillCfg.mSpeed);
                break;
            }

            case SkillTargetType.Direction:
            {
                var moveDir = gameObject.AddComponent <TfMoveToDirection>();
                moveDir.StartMove(mCastCfg.mDirection, mSkillCfg.mDuration, mSkillCfg.mSpeed);
                break;
            }
            }

            if (mSkillCfg.mTimer)
            {
                //因为要检查是否获取目标,所以子弹类型每帧更新
                if (mSkillCfg.mEffectDelay > 0)
                {
                    var delayTimer = new DCDurationTimer(mSkillCfg.mEffectDelay, SetupBulletTimerStep2)
                                     .SetAutoDestroy(true).CreateNormal();
                    mTimerToDestroy.Add(delayTimer);
                }
                else
                {
                    SetupBulletTimerStep2();
                }
            }
        }
Exemplo n.º 6
0
 void OnCdEnd()
 {
     mCdTimer = null;
     ViewGen.cdImage.enabled    = false;
     ViewGen.cdImage.fillAmount = 0;
 }