IEnumerator DestroyingRoutine() { destroying = true; GameObject o = FightMgr.Instance.LoadAndInstantiate(FightDefine.Prefab_Particle_WeedCrush); o.transform.position = transform.position; #if !FightTest MusicManager.Instance.PlaySoundEff("Music/WeedCrushMusic"); #endif anim.Play("JellyDestroy"); slot.gravity = true; slot.SetBlock(null); SlotGravity.Reshading(); while (anim.isPlaying) { yield return(0); } Destroy(gameObject); }
// Crush block funtion override public void BlockCrush(bool force, Transform parent, bool isDirect = false, E_CardType cardType = E_CardType.None) { if (destroying) { return; } if (eventCountBorn == FightMgr.Instance.eventCount && !force) { return; } eventCountBorn = FightMgr.Instance.eventCount; level--; FieldMgr.field.blocks[slot.Point.X, slot.Point.Y] = level; if (level == 0) { slot.gravity = true; // slot.SetScore(1); slot.SetBlock(null); SlotGravity.Reshading(); StartCoroutine(DestroyingRoutine()); return; } if (level > 0) { anim.Play("BlockCrush"); #if !FightTest MusicManager.Instance.PlaySoundEff("Music/BlockHit"); #endif _uiSprite.spriteName = spritesName[level - 1]; } }
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; }
// Crush block funtion override public void BlockCrush(bool force, Transform parent, bool isDirect = false, E_CardType cardType = E_CardType.None) { if (destroying) { return; } if (eventCountBorn == FightMgr.Instance.eventCount && !force) { return; } eventCountBorn = FightMgr.Instance.eventCount; // level --; //FieldAssistant.Instance.field.blocks[slot.Row, slot.Col] = level; if (level == 0) { slot.gravity = true; // slot.SetScore(1); slot.SetBlock(null); SlotGravity.Reshading(); StartCoroutine(DestroyingRoutine()); return; } if (level > 0) { // #if !FightTest // FightMgr.Instance.AttackBoss(); // #endif #if !FightTest E_AddEnergyType addType = isDirect ? E_AddEnergyType.Powup : E_AddEnergyType.Normal; // FightMgr.Instance.AddEnergy(addType); EnergyMgr.Instance.AddEnergySmall(parent, addType); #endif } }
public IEnumerator CreateMap(int level) { //加载当前地图 Fight.LevelProfile.NewCurrentLevelProfile = Fight.Level.AllLevels[level]; //保存地图数据 _currentLevelProfile = Fight.LevelProfile.NewCurrentLevelProfile; field = new MatchField(_currentLevelProfile.Width, _currentLevelProfile.Height); field.chipCount = _currentLevelProfile.CardCount; //生成底图 yield return(FightMgr.Instance.StartCoroutine(GenerateSlots())); //生成障碍物 yield return(FightMgr.Instance.StartCoroutine(GenerateBlocks())); InitializeSlot(); yield return(FightMgr.Instance.StartCoroutine(GenerateWalls())); SlotGravity.Reshading(); //yield return StartCoroutine(GenerateJelly()); yield return(FightMgr.Instance.StartCoroutine(GenerateChips())); yield return(FightMgr.Instance.StartCoroutine(GeneratePowerups())); yield return(FightMgr.Instance.StartCoroutine(GenerateBoss())); #if FightTest //可以开始 for (int i = 0; i < MyBossRoot.childCount; i++) { MyBossRoot.GetChild(i).gameObject.SetActive(true); } for (int i = 0; i < EnemyRoot.childCount; i++) { EnemyRoot.GetChild(i).gameObject.SetActive(true); } yield return(new WaitForSeconds(1f)); FightMgr.Instance.isPlaying = true; #else //UIMatching._instance.ShowEffect(0); yield return(new WaitForSeconds(0.3f)); EventDispatcher.TriggerEvent <int>(UIFight.BossCreateEvent, 0); // yield return new WaitForSeconds(1f); //UIMgr.Instance.DestroyUI(E_UIType.UIMainPanel); EventDispatcher.TriggerEvent(UIFight.BeginStartTime); MusicManager.Instance.PlaySoundEff("Music/readyGo"); // FightMgr.Instance.RefreshEnergy(0f); FightMgr.Instance.isPlaying = true; FightMgr.Instance.IsFighting = true; #endif EventDispatcher.TriggerEvent(FightDefine.Event_LevelLoadOver); //新生成的 if (FightMgr.Instance.ListNewPowerUp.Count > 0) { EventDispatcher.TriggerEvent <Slot, E_CardType>(FightDefine.Event_HasNewBomb, FightMgr.Instance.ListNewPowerUp[0].Slot, FightMgr.Instance.ListNewPowerUp[0].CardType); FightMgr.Instance.ListNewPowerUp.Clear(); } }