示例#1
0
    public void ShowSkill(int effId, Vector3 uiPos, float time = 2f)
    {
        EffectAPI.PlaySceneEffect((EFFECT_ID)effId, uiPos, null, null, true);
        //skillName_.text = name;
        //skillName_.transform.localPosition = uiPos;
        //skillName_.gameObject.SetActive(true);
        //GlobalInstanceFunction.Instance.Invoke(() =>
        //{

        //    if (skillName_ == null || skillName_.gameObject == null)
        //        return;
        //    skillName_.gameObject.SetActive(false);
        //}, time);
    }
示例#2
0
    public void Beattack_1(int skillId, int skillLv, bool playAnim = true, bool isDead = false, bool isDodge = false, BattleActor attacker = null, bool playEffect = true)
    {
        //SkillData skill = SkillData.GetData(skillId);
        BattleActor entity = Battle.Instance.GetActorByInstId(PlayerID);

        if (entity == null)
        {
            return;
        }

        if (entity.isDead)
        {
            Reborn();
        }
        else if (skillId == 1031)//崩击
        {
            int effId = GetStateBeattackEffectID(skillId);
            if (effId != -1)
            {
                // 如果是防御特效
                ExcuteState(StateInst.ExcuteType.ET_Beattack, null, null, true);

                //die
                if (isDead)
                {
                    GlobalInstanceFunction.Instance.setTimeScale(Battle.Instance.reportPlaySpeed_ * 0.3f);
                    m_EntityAnimator.Play("Base Layer.beattack02", -1, 0.1f);
                    SetEntityActionTime(0f);
                    XShake shake = ActorObj.GetComponent <XShake>();
                    if (shake != null)
                    {
                        GameObject.Destroy(shake);
                    }
                    shake                         = ActorObj.AddComponent <XShake>();
                    shake.battlePos               = Battle.Instance.GetActorByInstId(PlayerID).BattlePos;
                    shake.originPos_              = ActorObj.transform.position;
                    shake.OnBeattackActionFinish += OnBeattackActionFinish;
                    shake.OnMoveBackActionFinish += OnMoveBackActionFinish;
                    m_bPlayingBeattackAction      = true;
                }
                else
                {
                    if (playAnim)
                    {
                        if (takeDmgAction.Equals(GlobalValue.TTakeDmg))
                        {
                            //if (!m_bPlayingBeattackAction)
                            //{
                            //    m_EntityAnimator.Play("Base Layer.beattack02", -1, 0.1f);
                            SetAnimationParam(takeDmgAction, AnimatorParamType.APT_Trigger);
                            //    m_EntityAnimator.StartRecording(0);
                            //    m_bPlayingBeattackAction = true;
                            //}
                            //else
                            //{
                            //    m_EntityAnimator.StopRecording();
                            //    m_EntityAnimator.StartPlayback();
                            //    m_EntityAnimator.playbackTime = 0f;
                            //    isPlayBack = true;
                            //}
                            //SetEntityActionTime(0);
                            //GlobalInstanceFunction.Instance.Invoke(() =>
                            //{
                            XShake shake = ActorObj.GetComponent <XShake>();
                            if (shake != null)
                            {
                                GameObject.Destroy(shake);
                            }
                            shake = ActorObj.AddComponent <XShake>();
                            shake.OnlyBack();
                            selfActor_                    = Battle.Instance.GetActorByInstId(m_PlayerID);
                            shake.battlePos               = selfActor_.BattlePos;
                            shake.originPos_              = ActorObj.transform.position;//Battle.Instance.GetStagePointByIndex(selfActor_.BattlePos).position;
                            shake.OnBeattackActionFinish += OnBeattackActionFinish;
                            shake.OnMoveBackActionFinish += OnMoveBackActionFinish;
                            //SetEntityActionTime(1);
                            //}, 1);
                        }
                        else
                        {
                            //if (!m_bPlayingBeattackAction)
                            //{
                            SetAnimationParam(takeDmgAction, AnimatorParamType.APT_Trigger);
                            //    m_EntityAnimator.StartRecording(0);
                            //    m_bPlayingBeattackAction = true;
                            //}
                            //else
                            //{
                            //    m_EntityAnimator.StopRecording();
                            //    m_EntityAnimator.StartPlayback();
                            //    m_EntityAnimator.playbackTime = 0f;
                            //    isPlayBack = true;
                            //}
                        }
                    }
                }
            }
            else
            {
                m_bPlayingBeattackAction = false;
                EffectAPI.PlaySceneEffect(EFFECT_ID.EFFECT_BengjiMiss, Vector3.zero, ActorObj.transform, null, true);
            }
        }
        else if (/*skill != null &&*/ skillId != 2391 /*复活技能不调用受击动作*/)
        {
            if (playEffect)
            {
                int effId = GetStateBeattackEffectID(skillId);
                if (effId != -1)
                {
                    SkillData skilldata = null;
                    if (attacker != null)
                    {
                        skilldata = SkillData.GetData(skillId, skillLv);
                        if (skilldata != null)
                        {
                            //如果该闪避但没有闪避状态 强制闪避一下。。。
                            if (isDodge && !HasState(StateType.ST_Dodge))
                            {
                                if (crtStateData_._BeattackPkg.effectId_ != 0)
                                {
                                    EffectAPI.Play(EFFECT_ID.EFFECT_DODGE, ActorObj, null, null, null, (EffectInst ei, ParamData data) =>
                                    {
                                        ei.transform.parent     = ActorObj.transform;
                                        ei.transform.localScale = Vector3.one;
                                    });
                                }
                            }
                            ExcuteState(StateInst.ExcuteType.ET_Beattack, null, null, skilldata._IsPhysic, isDodge);
                            takeDmgAction = GlobalValue.TDodge;
                        }
                    }
                }
            }

            //die
            if (isDead)
            {
                GlobalInstanceFunction.Instance.setTimeScale(Battle.Instance.reportPlaySpeed_ * 0.7f);
                m_EntityAnimator.Play("Base Layer.beattack02", -1, 0.1f);
                SetEntityActionTime(0f);
                XShake shake = ActorObj.GetComponent <XShake>();
                if (shake != null)
                {
                    GameObject.Destroy(shake);
                }
                shake                         = ActorObj.AddComponent <XShake>();
                shake.battlePos               = Battle.Instance.GetActorByInstId(PlayerID).BattlePos;
                shake.originPos_              = ActorObj.transform.position;
                shake.OnBeattackActionFinish += OnBeattackActionFinish;
                shake.OnMoveBackActionFinish += OnMoveBackActionFinish;
                m_bPlayingBeattackAction      = true;
            }
            else
            {
                if (playAnim)
                {
                    if (takeDmgAction.Equals(GlobalValue.TTakeDmg))
                    {
                        //if (!m_bPlayingBeattackAction)
                        //{
                        SetAnimationParam(takeDmgAction, AnimatorParamType.APT_Trigger);
                        //m_EntityAnimator.StartRecording(0);
                        //m_bPlayingBeattackAction = true;
                        //}
                        //else
                        //{
                        //    m_EntityAnimator.StopRecording();
                        //    m_EntityAnimator.StartPlayback();
                        //    m_EntityAnimator.playbackTime = 0f;
                        //    isPlayBack = true;
                        //}
                        //SetEntityActionTime(0);
                        //GlobalInstanceFunction.Instance.Invoke(() =>
                        //{
                        XShake shake = ActorObj.GetComponent <XShake>();
                        if (shake != null)
                        {
                            GameObject.Destroy(shake);
                        }
                        shake = ActorObj.AddComponent <XShake>();
                        shake.OnlyBack();
                        selfActor_                    = Battle.Instance.GetActorByInstId(m_PlayerID);
                        shake.battlePos               = selfActor_.BattlePos;
                        shake.originPos_              = ActorObj.transform.position;//Battle.Instance.GetStagePointByIndex(selfActor_.BattlePos).position;
                        shake.OnBeattackActionFinish += OnBeattackActionFinish;
                        shake.OnMoveBackActionFinish += OnMoveBackActionFinish;
                        //SetEntityActionTime(1);
                        //}, 1);
                    }
                    else
                    {
                        //if (!m_bPlayingBeattackAction)
                        //{
                        SetAnimationParam(takeDmgAction, AnimatorParamType.APT_Trigger);
                        //    m_EntityAnimator.StartRecording(0);
                        //    m_bPlayingBeattackAction = true;
                        //}
                        //else
                        //{
                        //    m_EntityAnimator.StopRecording();
                        //    m_EntityAnimator.StartPlayback();
                        //    m_EntityAnimator.playbackTime = 0f;
                        //    isPlayBack = true;
                        //}
                    }
                }
            }
        }
        takeDmgAction = GlobalValue.TTakeDmg;
    }
示例#3
0
    public void Catch(COM_ReportAction action, CatchCallBack callback)
    {
        callBack_ = callback;
        aim_      = Battle.Instance.GetActorByIdx(action.target_);
        master_   = Battle.Instance.GetActorByInstId(action.casterId_);

        if (aim_ == null)
        {
            return;
        }

        if (master_ == null)
        {
            return;
        }

        master_.ControlEntity.SetAnimationParam(GlobalValue.TCast, AnimatorParamType.APT_Trigger);
        EFFECT_ID id = (EFFECT_ID)SkillData.GetMinxiLevelData(action.skill_)._Cast_effectID;

        if (aim_.ControlEntity == null || aim_.ControlEntity.ActorObj == null)
        {
            return;
        }

        EffectAPI.Play(id, aim_.ControlEntity.ActorObj);
        GlobalInstanceFunction.Instance.ScaleLerp(aim_.ControlEntity.ActorObj.transform, 1f, 0.3f, 0.5f, () =>
        {
            if (aim_.ControlEntity == null || aim_.ControlEntity.ActorObj == null)
            {
                return;
            }
            GlobalInstanceFunction.Instance.ScaleLerp(aim_.ControlEntity.ActorObj.transform, 0.3f, 1f, 0.5f, () =>
            {
                if (aim_.ControlEntity == null || aim_.ControlEntity.ActorObj == null)
                {
                    return;
                }
                GlobalInstanceFunction.Instance.ScaleLerp(aim_.ControlEntity.ActorObj.transform, 1f, 0.3f, 0.5f, () =>
                {
                    if (aim_.ControlEntity == null || aim_.ControlEntity.ActorObj == null)
                    {
                        return;
                    }
                    GlobalInstanceFunction.Instance.ScaleLerp(aim_.ControlEntity.ActorObj.transform, 0.3f, 1f, 0.5f, () =>
                    {
                        if (aim_.ControlEntity == null || aim_.ControlEntity.ActorObj == null)
                        {
                            return;
                        }
                        if (action.zhuachongOk_)
                        {
                            if (aim_.ControlEntity == null || aim_.ControlEntity.ActorObj == null)
                            {
                                return;
                            }
                            GlobalInstanceFunction.Instance.ScaleLerp(aim_.ControlEntity.ActorObj.transform, 1f, 0f, 0.5f, () =>
                            {
                                Transform pos = Battle.Instance.GetStagePointByIndex(aim_.BattlePos);
                                if (pos == null)
                                {
                                    return;
                                }
                                EffectAPI.PlaySceneEffect(EFFECT_ID.EFFECT_Fengyinchenggong, Vector3.zero, pos, null, true);
                                Battle.Instance.DeleteBattleEntityItem(aim_.InstId);
                                Battle.Instance.DeleteDeadEntity(aim_.InstId);
                                GlobalInstanceFunction.Instance.Invoke(() =>
                                {
                                    if (callBack_ != null)
                                    {
                                        callBack_();
                                    }
                                }, 1f);
                            });
                        }
                        else
                        {
                            if (callBack_ != null)
                            {
                                callBack_();
                            }
                        }
                    });
                });
            });
        });
    }
示例#4
0
    public void Do(BattleActor caster, BattleActor aim, FinishCallBack callback)
    {
        callBack_ = callback;
        caster_   = caster;
        aim_      = aim;
        if (caster_ != null)
        {
            EffectInst[] effs = caster_.ControlEntity.ActorObj.GetComponentsInChildren <EffectInst>();
            for (int i = 0; i < effs.Length; ++i)
            {
                effs[i].DealNotExcuteHandler();
                effs[i].DestorySelf();
            }
        }

        caster.ControlEntity.ActorObj.SetActive(false);
        caster.ControlEntity.ActorObj.transform.position = aim.ControlEntity.ActorObj.transform.position + aim.ControlEntity.ActorObj.transform.forward * -0.5f;
        caster.ControlEntity.ActorObj.transform.LookAt(aim.ControlEntity.ActorObj.transform);

        GlobalInstanceFunction.Instance.Invoke(() =>
        {
            caster.ControlEntity.ActorObj.SetActive(true);
            EffectAPI.PlaySceneEffect(EFFECT_ID.EFFECT_Kill, Vector3.zero, aim_.ControlEntity.ActorObj.transform, KillEffCallBack, true);
            GlobalInstanceFunction.Instance.Invoke(() =>
            {
                caster.ControlEntity.MoveTo(aim.ControlEntity.ActorObj.transform.position + aim.ControlEntity.ActorObj.transform.forward, (int data) =>
                {
                    GlobalInstanceFunction.Instance.Invoke(() =>
                    {
                        if (killEff != null)
                        {
                            GameObject.Destroy(killEff);
                        }
                        aim.SetIprop(PropertyType.PT_HpCurr, 0);
                        if (aim.InstId == GamePlayer.Instance.InstId)
                        {
                            AttaclPanel.Instance.ChangeValue(PropertyType.PT_HpCurr, GamePlayer.Instance.GetIprop(PropertyType.PT_HpMax) * -1, GamePlayer.Instance.GetIprop(PropertyType.PT_HpMax), GamePlayer.Instance.GetIprop(PropertyType.PT_MpMax));
                        }
                        if (Battle.Instance.SelfActorBattleBaby != null)
                        {
                            if (aim.InstId == Battle.Instance.SelfActorBattleBaby.InstId)
                            {
                                AttaclPanel.Instance.ChangeValueBaby(PropertyType.PT_MpCurr, aim.battlePlayer.hpMax_ * -1, aim.battlePlayer.hpMax_, aim.battlePlayer.mpMax_);
                            }
                        }
                        if (aim.ControlEntity.PlayerInfoUI != null)
                        {
                            Roleui ro = aim.ControlEntity.PlayerInfoUI.GetComponent <Roleui>();
                            if (null == ro)
                            {
                                return;
                            }
                            ro.ValueChange(PropertyType.PT_HpCurr, GamePlayer.Instance.GetIprop(PropertyType.PT_HpMax) * -1, GamePlayer.Instance.GetIprop(PropertyType.PT_HpMax), GamePlayer.Instance.GetIprop(PropertyType.PT_MpMax), false, false);
                        }

                        aim.ControlEntity.hitOver_ = false;
                        aim.ControlEntity.DealEntityDie();
                        Wait4AimDie();
                    }, 0.7f);
                }, false, false, 0.3f, 0, false);
            }, 0.3f);
        }, 1f);
    }
示例#5
0
    void MoveToOtherAim()
    {
        if (caster_.ControlEntity == null)
        {
            ApplicationEntry.Instance.PostSocketErr(57557);
            return;
        }

        Transform crossTrans  = null;
        int       aimForGuard = aim_.ForGuardPos;

        if (aimForGuard != (int)BattlePosition.BP_None)
        {
            crossTrans = Battle.Instance.GetStagePointByIndex(aimForGuard);
        }
        if (crossTrans != null)
        {
            BattleActor actor = Battle.Instance.GetActorByIdx((int)aimForGuard);
            if (actor.ControlEntity == null)
            {
                ApplicationEntry.Instance.PostSocketErr(57557);
                return;
            }

            actor.battlePlayer.mpCrt_ -= crt_data_._Cost_mana;
            if (actor.InstId == GamePlayer.Instance.InstId)
            {
                AttaclPanel.Instance.ChangeValue(PropertyType.PT_MpCurr, crt_data_._Cost_mana * -1, actor.battlePlayer.hpMax_, actor.battlePlayer.mpMax_);
                ScrollViewPanel.curMp = actor.battlePlayer.mpCrt_;
            }

            if (Battle.Instance.SelfActorBattleBaby != null)
            {
                if (actor.InstId == Battle.Instance.SelfActorBattleBaby.InstId)
                {
                    AttaclPanel.Instance.ChangeValueBaby(PropertyType.PT_MpCurr, crt_data_._Cost_mana * -1, actor.battlePlayer.hpMax_, actor.battlePlayer.mpMax_);
                }
            }

            if (actor.ControlEntity.PlayerInfoUI != null &&
                actor.ControlEntity.PlayerInfoUI.GetComponent <Roleui>() != null)
            {
                Roleui roleinfoUI = actor.ControlEntity.PlayerInfoUI.GetComponent <Roleui>();
                roleinfoUI.ValueChange(PropertyType.PT_MpCurr, crt_data_._Cost_mana * -1, actor.battlePlayer.hpMax_, actor.battlePlayer.mpMax_, false);
            }

            Vector3 crossPos = (crossTrans.position + crossTrans.forward);
            caster_.ControlEntity.MoveTo(crossPos, AttackMotion);
            EffectAPI.PlaySceneEffect(EFFECT_ID.EFFECT_huwei, Vector3.zero, aim_.ControlEntity.ActorObj.transform, null, true);
            aim_.ControlEntity.MoveTo(crossPos, (int data) =>
            {
                if (aim_.ControlEntity == null)
                {
                    ApplicationEntry.Instance.PostSocketErr(57557);
                    return;
                }
                //				aim_.ControlEntity.PlayEntityAction( GlobalValue.ActionName , GlobalValue.Action_Idle );
                aim_.ControlEntity.SetAnimationParam(GlobalValue.FMove, AnimatorParamType.APT_Float, GlobalValue.MoveMinGap);
            }, false, true, 0.3f);
        }
        else
        {
            if (realAimPos_)
            {
                caster_.ControlEntity.MoveTo(aim_.ControlEntity.ActorObj, AttackMotion);
            }
            else
            {
                caster_.ControlEntity.MoveTo(Battle.Instance.GetStagePointByIndex(aim_.BattlePos).gameObject, AttackMotion);
            }
        }
    }