public void OnGUI() { if (GUI.Button(new Rect(0, 0, 150, 40), "FightTest")) { int cnt = Msgs.Count; AttackVO atkVo = null; for (int i = 0; i < cnt; i++) { EffectVO vo = Msgs[i]; vo.Target.Pid = PlayerProxy.Instance.Info.pid; if (vo.HeroProp == HeroPropType.Damage || vo.HeroProp == HeroPropType.Hp || vo.HeroProp == HeroPropType.Shield) { atkVo = PVPManager.Instance.On_AddMainOverEffect(vo); } else if (null != PVPManager.Instance) { PVPManager.Instance.On_AddEffect(vo); } } if (null != PVPManager.Instance && !PVPManager.Instance.InPlayMainAnimation() && null != atkVo) { PVPManager.Instance.PlayMainAnimation(atkVo); } } GUI.Label(new Rect(100, 100, 400, 40), FightProxy.xxxxxx); }
/// <summary>添加主动画过后执行效果</summary> /// <param name="vo"></param> public AttackVO On_AddMainOverEffect(EffectVO vo) { AttackVO atkvo = new AttackVO(); atkvo.Pid = vo.Source.Pid; atkvo.TargetPid = vo.Target.Pid; atkvo.From = vo.Source.Target; atkvo.To = vo.Target.Target; AttackVO dicvo; if (!AttackDIc.TryGetValue(atkvo.ID, out dicvo)) { AttackDIc[atkvo.ID] = atkvo; } AttackDIc[atkvo.ID].Effects.Add(vo); return(AttackDIc[atkvo.ID]); }
/// <summary>卡牌产生的效果</summary> /// <param name="data"></param> public void OnRec_EffectMsg(object data) { EffectsMsg msg = data as EffectsMsg; List <EffectVO> vos = new List <EffectVO>(); int cnt = msg.effect.Count; AttackVO atkVo = null; bool doeffect = false; for (int i = 0; i < cnt; i++) { EffectVO vo = new EffectVO(); vo.Prase(msg.effect[i]); vos.Add(vo); if (vo.HeroProp == HeroPropType.Damage || vo.HeroProp == HeroPropType.Hp || vo.HeroProp == HeroPropType.Shield) { atkVo = PVPManager.Instance.On_AddMainOverEffect(vo); } else if (null != PVPManager.Instance) { doeffect = true; PVPManager.Instance.On_AddEffect(vo); } Debug.LogError("EffectMsg:" + msg.effect[i].target.type + " | Prop:" + msg.effect[i].prop + " | Value:" + msg.effect[i].value + " TargetIndex:" + msg.effect[i].target.index); } if (doeffect) { PVPManager.Instance.On_DoMoveNextEffect(); } if (null != PVPManager.Instance && null != atkVo) { PVPManager.Instance.PlayMainAnimation(atkVo); } }
/// <summary>播放攻击主动画</summary> /// <param name="atkVo"></param> public void PlayMainAnimation(AttackVO atkVo) { if (CurrentAttack != null) { if (mAttkQueue == null) { mAttkQueue = new List <string>(); } mAttkQueue.Add(atkVo.ID); return; } CurrentAttack = atkVo; AttackDIc.Remove(atkVo.ID); string warnstr = CurrentAttack == null ? "CurrentAttack is Null" : "CurrentAttack not Null"; Debug.Log(warnstr); bool isFst = atkVo.TargetPid == FightProxy.Instance.RoomInfo.frole.pid; CardRole cd0 = PVPManager.Instance.GetCardRoleByPos(isFst, atkVo.From); CardRole cd1 = PVPManager.Instance.GetCardRoleByPos(!isFst, atkVo.To); PVPManager.Instance.TweenOutOrgObjectAtk = cd0.transform; PVPManager.Instance.TweenOutOrgObjectAtked = cd1.transform; Vector3 atkScreenPos = AvatarCamera.WorldToScreenPoint(PVPManager.Instance.TweenOutOrgObjectAtk.position); Vector3 atkedScreenPos = AvatarCamera.WorldToScreenPoint(PVPManager.Instance.TweenOutOrgObjectAtked.position); PVPManager.Instance.IsMirror = atkScreenPos.x > atkedScreenPos.x; PVPManager.Instance.PlayMainAnimation(); }
// Update is called once per frame void Update() { if (null != SkillSystem.Instance.TriggerStay) { SkillSystem.Instance.TriggerStay(); } bool isTwoOver = mTweenOutAtkOver && mTweenOutAtkedOver; bool isSngOver = TweenOut_IsSng && mTweenOutAtkOver; if ((isTwoOver || isSngOver) && null != mFightObject) { mTweenOutAtkOver = false; mTweenOutAtkedOver = false; //TweenOutAtk.Target.gameObject.SetActive(false); //TweenOutAtked.Target.gameObject.SetActive(false); mFightObject.SetActive(true); } if (null != TweenOutAtk) { TweenOutAtk.Update(); } if (null != TweenOutAtked) { TweenOutAtked.Update(); } if (null != TweenOutAtk && null != TweenOutAtked && TweenOutAtk.TweenBackIsComplete && TweenOutAtked.TweenBackIsComplete) { TweenOutOrgObjectAtk.gameObject.SetActive(true); TweenOutOrgObjectAtked.gameObject.SetActive(true); TweenOutAtk.ResetBool(); TweenOutAtked.ResetBool(); GameObject.DestroyObject(TweenOutAtk.Target.gameObject); GameObject.DestroyObject(TweenOutAtked.Target.gameObject); CurrentAttack = null; PlayNextMainAnimation(); } else if (null != TweenOutAtk && TweenOutAtk.TweenBackIsComplete && TweenOut_IsSng) { TweenOutOrgObjectAtk.gameObject.SetActive(true); TweenOutAtk.ResetBool(); GameObject.DestroyObject(TweenOutAtk.Target.gameObject); CurrentAttack = null; PlayNextMainAnimation(); } if (null != mAtkOutTransform && null != mAtkedOutTransform && TweenOutAtk.TweenOutIsComplete && TweenOutAtked.TweenOutIsComplete) { GameObject.DestroyObject(TweenOutAtk.Target.gameObject); TweenOutAtk.Target = null; mAtkOutTransform = null; mAtkedOutTransform = null; } else if (null != mAtkOutTransform && TweenOutAtk.TweenOutIsComplete && TweenOut_IsSng) { GameObject.DestroyObject(TweenOutAtk.Target.gameObject); TweenOutAtk.Target = null; mAtkOutTransform = null; mAtkedOutTransform = null; } bool isSng = TweenOutAtk_ResLoaded && TweenOut_IsSng; bool isTwo = TweenOutAtk_ResLoaded && TweenOutAtked_ResLoaded; if (isSng || isTwo) { TweenOutAtk_ResLoaded = false; TweenOutAtked_ResLoaded = false; TweenOutAtk.TweenToFightLayer(); if (!TweenOut_IsSng) { TweenOutAtked.TweenToFightLayer(true); } TweenOutOrgObjectAtk.gameObject.SetActive(false); if (!TweenOut_IsSng) { TweenOutOrgObjectAtked.gameObject.SetActive(false); } } }