public void AddJiangBei(int count, Transform posParent, Transform targetPosParent, float totalDealy) { float delay = 0.5f; List <FlyingBezier> list = new List <FlyingBezier>(); if (count > 0) { PrizeAnimationCount++; } for (int i = 0; i < count; i++) { FlyingBezier obj = null; if (_poolsJiangBei.Count > 0) { obj = _poolsJiangBei.Dequeue(); } else { obj = FightMgr.Instance.LoadAndInstantiate(FightDefine.Prefab_Particle_JiangBeiFlying).GetComponent <PrizeFlying>(); // ResourceMgr.Instance.LoadAndInstanceGameObjectFromPreload(FightDefine.ParticleCardCrush); } list.Add(obj); obj.transform.SetParent(posParent, false); obj.transform.localPosition = new Vector3(Random.Range(-10f, 10f), Random.Range(-10f, 10f), 0); obj.transform.SetParent(targetPosParent); obj.gameObject.SetActive(false); obj.Speed = 0.64f; (obj as PrizeFlying).PlayPrize(delay, _poolsJiangBei, list, OnPrizeAnimationFinish, totalDealy); delay += 0.1f; } }
private void DoFlyBlockToMyself() { _isDoSkillToSlot = true; var listTarget = _filedMgr.FindFlyBlockTargetSlots(_FlyBlockToMyCnt); List <FlyingBezier> list = new List <FlyingBezier>(); for (int i = 0; i < listTarget.Count; i++) { FlyingBezier obj = null; Queue <FlyingBezier> pool = null; bool isBlock = true; //Random.Range(1,1000) <= 750; if (isBlock) { //木块 if (_poolsBlock.Count > 0) { obj = _poolsBlock.Dequeue(); } else { obj = FightMgr.Instance.LoadAndInstantiate(FightDefine.Prefab_Flying_Block).GetComponent <BlockFlyToOpp>(); // ResourceMgr.Instance.LoadAndInstanceGameObjectFromPreload(FightDefine.ParticleCardCrush); } pool = _poolsBlock; } obj.transform.SetParent(goBossOpp.transform, false); obj.transform.localPosition = new Vector3(Random.Range(-46f, 46f), Random.Range(-46f, 46f), 0); obj.transform.SetParent(listTarget[i].transform); obj.gameObject.SetActive(false); obj.Speed = 0.8f; (obj as BlockFlyToOpp).Play(i * 0.3f, pool, list, false, () => { SlotGravity.Reshading(); _isDoSkillToSlot = false; EventCounter(); }, listTarget[i], (targetSlot) => { _filedMgr.CreateOneBlock(targetSlot); }); } _FlyBlockToMyCnt = 0; }
public void AddEnergySmall(Transform posParent, E_AddEnergyType addType) { // if(!FightMgr.Instance.isPlaying) return; if (FightMgr.Instance.limitationRoutineIsOver) { //游戏结束了 return; } int count = GetEnergyCount(addType); float delay = 0f; List <FlyingBezier> list = new List <FlyingBezier>(); for (int i = 0; i < count; i++) { FlyingBezier obj = null; if (_poolsEnergy.Count > 0) { obj = _poolsEnergy.Dequeue(); } else { obj = FightMgr.Instance.LoadAndInstantiate(FightDefine.Prefab_Particle_EnergySmall).GetComponent <EnergySmall>(); // ResourceMgr.Instance.LoadAndInstanceGameObjectFromPreload(FightDefine.ParticleCardCrush); } list.Add(obj); obj.transform.SetParent(posParent, false); obj.transform.localPosition = new Vector3(Random.Range(-26f, 26f), Random.Range(-26f, 26f), 0); obj.transform.SetParent(FieldMgr.MyBossPosEffect); obj.gameObject.SetActive(false); obj.Speed = 0.8f; (obj as EnergySmall).PlayEnergySmall(delay, _poolsEnergy, list, addType, OnFinishEnergySmall); delay += 0.1f; } // FightMgr.Instance.StartCoroutine(AddEnergy(addType,list)); }
/// <summary> /// 播放技能效果 /// </summary> /// <param name="skill">Skill.</param> public void PlaySkillEffect(int skillId, bool isMyAttack) { // isMyAttack = !isMyAttack; SkillModule skill = SkillModuleMgr.Instance.GetSkill(skillId); if (skill == null) { DebugUtil.Error("未找到skill,id = " + skillId); } if (skill.SkillTypeDetail == E_SkillTypeDetail.AddMoves) { if (isMyAttack) { //增加自己步数 int addMoves = int.Parse(skill.EffectNum); EventDispatcher.TriggerEvent <int, bool>(UIFight.AddMoves, addMoves, true); } else { ShowMsg(FightDefine.E_NoteMsgType.OppUseAddMoves); } } else if (skill.SkillTypeDetail == E_SkillTypeDetail.AddBlocks) { if (isMyAttack) { //自己飞向对方 List <FlyingBezier> list = new List <FlyingBezier>(); int count = int.Parse(skill.EffectNum); for (int i = 0; i < count; i++) { FlyingBezier obj = null; Queue <FlyingBezier> pool = null; bool isBlock = true; //Random.Range(1,1000) <= 750; if (isBlock) { //木块 if (_poolsBlock.Count > 0) { obj = _poolsBlock.Dequeue(); } else { obj = FightMgr.Instance.LoadAndInstantiate(FightDefine.Prefab_Flying_Block).GetComponent <BlockFlyToOpp>(); // ResourceMgr.Instance.LoadAndInstanceGameObjectFromPreload(FightDefine.ParticleCardCrush); } pool = _poolsBlock; } // else // { // //杂草 // if(_poolsBlockWeed.Count > 0) // { // obj = _poolsBlockWeed.Dequeue(); // } // else // { // obj = FightMgr.Instance.LoadAndInstantiate(FightDefine.Prefab_Flying_Weed).GetComponent<BlockFlyToOpp>();// ResourceMgr.Instance.LoadAndInstanceGameObjectFromPreload(FightDefine.ParticleCardCrush); // } // // pool = _poolsBlockWeed; // } list.Add(obj); obj.transform.SetParent(_energyMgr.transform, false); obj.transform.localPosition = new Vector3(Random.Range(-46f, 46f), Random.Range(-46f, 46f), 0); obj.transform.SetParent(goBossOpp.transform); obj.gameObject.SetActive(false); obj.Speed = 0.8f; (obj as BlockFlyToOpp).Play(i * 0.3f, pool, list, true, null, null, null); } } else { //对方往我棋盘飞 _FlyBlockToMyCnt = int.Parse(skill.EffectNum); } } else if (skill.SkillTypeDetail == E_SkillTypeDetail.ForbidAttack) { if (isMyAttack) { //不管 } else { IsIceBlcok = true; //获取冰封路径 var dicSlot = _filedMgr.FindIcePath(); //停止原来协程 if (_iceBlock != null) { StopCoroutine(_iceBlock); } //开始冰封 _iceBlock = StartCoroutine(ReIceBlockTimer(dicSlot, float.Parse(skill.EffectNum))); //恢复冰封协程 StartCoroutine(IceSlot(dicSlot)); ShowMsg(FightDefine.E_NoteMsgType.ShowIceNotice, skill.Effect); } } }