Пример #1
0
        public void SkillSelf(AnimActionParam param, KSkillDisplay skillDisplay, bool isPushStack)
        {
            ActionByAnim action = new ActionByAnim(Owner);

            action.InitParam(param, skillDisplay);
            action.IsPushStack = isPushStack;
            if (!action.IsCanActive())
            {
                return;
            }
            Owner.DispatchEvent(ControllerCommand.SetActiveAction, action);
        }
Пример #2
0
        //播放攻击动画
        public void PlayFightAnimation(SceneEntity target, uint skillId, Vector3 position)
        {
            Owner.AnimCmp.ResetFightingState();
            uint          jobId        = Owner.TabID;
            KSkillDisplay skillDisplay = KConfigFileManager.GetInstance().GetSkillDisplay(skillId, jobId);
            KActiveSkill  skillSetting = KConfigFileManager.GetInstance().GetActiveSkill(skillId, 1);

            AnimActionParam param = new AnimActionParam();

            param.skillId = (ushort)skillId;
            if (null != target)
            {
                KingSoftCommonFunction.LootAt(Owner.gameObject, target.gameObject);
                param.targetId = target.property.Id;
            }
            param.position = position;
            param.target   = target;
            if (null != Owner.property.activeAction)
            {
                Owner.property.activeAction.FinishImmediate();
            }
            if (skillDisplay.SkillType.CompareTo("MOVINGAOE") == 0)
            {
                SkillMovingAOE(param, skillDisplay, false);
            }
            else if (skillDisplay.SkillType.CompareTo("ANIM") == 0)
            {
                SkillSelf(param, skillDisplay, false);
            }
            else if (skillDisplay.SkillType.CompareTo("RUSH") == 0)
            {
                SkillRush(param, skillDisplay, false);
            }
            else if (skillDisplay.SkillType.CompareTo("SHOT") == 0)
            {
            }
        }
Пример #3
0
 public override void InitParam(AnimActionParam param, KSkillDisplay skillDisplay)
 {
     isRandomAnim = false;
     base.InitParam(param, skillDisplay);
 }
Пример #4
0
    public virtual void InitParam(AnimActionParam param, KSkillDisplay skillDisplay)
    {
        displayInfor    = skillDisplay;
        WeaponPosition  = displayInfor.WeaponPosition;
        skillId         = param.skillId;
        targetId        = param.targetId;
        level           = param.level;
        target          = param.target;
        endPosition     = KingSoftCommonFunction.GetGoundHeight(KingSoftCommonFunction.NearPosition(param.position));
        activeSkill     = KConfigFileManager.GetInstance().GetActiveSkill(skillId, level);
        FirstAttackTime = 0;
        animArys        = displayInfor.Anim.Split('|');
        int [] ids = KingSoftCommonFunction.RandomAry(animArys.Length);
        beginFxs = displayInfor.BeginEffect.Split('|');
        beginFxs = KingSoftCommonFunction.GrowArrays(beginFxs, animArys.Length);
        if (isRandomAnim)
        {
            animArys = KingSoftCommonFunction.RandomAryByList(animArys, ids);
            beginFxs = KingSoftCommonFunction.RandomAryByList(beginFxs, ids);
        }
        if (beginFxs[0].Length > 0)
        {
            AssetLoader.GetInstance().PreLoad(URLUtil.GetResourceLibPath() + beginFxs[0]);
        }
        if (displayInfor.EndEffect.Length > 0)
        {
            AssetLoader.GetInstance().PreLoad(URLUtil.GetResourceLibPath() + displayInfor.EndEffect);
        }
        if (displayInfor.BulletEffect.Length > 0)
        {
            AssetLoader.GetInstance().PreLoad(URLUtil.GetResourceLibPath() + displayInfor.BulletEffect);
        }

        try
        {
            string [] AttackTimes = activeSkill.AttackTimeList.Split(';');
            if (displayInfor.CameraEffect.CompareTo("SHAKE_ALL") == 0)
            {
                foreach (string _t in AttackTimes)
                {
                    try
                    {
                        shakeTimes.Add((float)System.Convert.ToDouble(_t));
                    }
                    catch (System.Exception e)
                    {
                    }
                }
                if (shakeTimes.Count > 0)
                {
                    FirstAttackTime = (float)shakeTimes[0];
                }
            }
            else
            {
                if (AttackTimes.Length > 0)
                {
                    try
                    {
                        FirstAttackTime = (float)System.Convert.ToDouble(AttackTimes[0]);
                    }
                    catch (System.Exception e)
                    {
                    }
                }
            }
            if (activeSkill.ClientCache)
            {
                KAminEvent _event = KConfigFileManager.GetInstance().GetAnimEvent(hero.property.tabID, animArys[0]);
                if (null == _event)
                {
                    FirstAttackTime = hero.AnimCmp.GetAnimLong(animArys[0]) - 0.3f;
                }
                else
                {
                    FirstAttackTime = _event.time;
                }
            }
        }
        catch (System.Exception e) {
        }
        hitTicker.SetCD(FirstAttackTime);
        finishTicker.SetCD(FirstAttackTime + displayInfor.hitDelay);
    }