Ejemplo n.º 1
0
    public void MoveUpdateCallBack()
    {
        XShake shake = gameObject.GetComponent <XShake>();

        if (shake != null)
        {
            GameObject.Destroy(shake);
        }
    }
Ejemplo n.º 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;
    }