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); }
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; }
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_(); } } }); }); }); }); }
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); }
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); } } }