Assets/Scenes/Levels/Battle/Endless.unity | ●●●●● patch | view | raw | blame | history | |
Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs | ●●●●● patch | view | raw | blame | history | |
Assets/Scripts/TowerDefense/Towers/Tower.cs | ●●●●● patch | view | raw | blame | history |
Assets/Scenes/Levels/Battle/Endless.unity
@@ -13002,6 +13002,8 @@ x: 5 y: 4 gridSize: 1.109 energyEffectPrefab: {fileID: 6740320714111919447, guid: c9fb6497ab1288942a4dd67d131473c9, type: 3} towerBulletUIPrefab: {fileID: 4636030447447409971, guid: f6edf4c41f0dac54d94e67945bca23f0, type: 3} towerEnergyUIPrefab: {fileID: 4636030447447409971, guid: 0d97566feabc1d644862df3fb52071a3, Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
@@ -114,6 +114,13 @@ private EnergyUICtl[,] arrTowerEnergyUi; private ParticleSystem[,] arrTowerEnergyEffect; /// <summary> /// 充能特效对应的Prefab. /// </summary> public ParticleSystem energyEffectPrefab; /// <summary> /// 此位置上塔对应的子弹充能Prefab.塔放置到当前的塔位后,如果是对应的塔防类型,需要把 /// 相应的界面指针传到塔防的数据结构内。 @@ -642,6 +649,7 @@ m_arrTowerBulletUIPos = new Vector2[dimensions.x, AttackRowNumbers]; arrTowerBulletUi = new BulletUICtl[dimensions.x, AttackRowNumbers]; arrTowerEnergyUi = new EnergyUICtl[dimensions.x, AttackRowNumbers]; arrTowerEnergyEffect = new ParticleSystem[dimensions.x, AttackRowNumbers]; for (int x = 0; x < dimensions.x; x++) { @@ -695,13 +703,22 @@ EnergyUICtl euc = img.GetComponent<EnergyUICtl>(); arrTowerEnergyUi[x, y] = euc; euc.gameObject.SetActive(false); // 设置播放特效对应的3D坐标: Vector3 vpos = GridToWorld(new IntVector2(x, dy - y), new IntVector2(2, 1)); vpos.x -= (gridSize / 2.0f); vpos.y += 5.0f; arrTowerEnergyEffect[x, y] = Instantiate(energyEffectPrefab); arrTowerEnergyEffect[x, y].transform.position = vpos; arrTowerEnergyEffect[x, y].Stop(); } } } public void updateGridOpenCoin(int ix, int iy) { GRID_OPENCASH += GRID_OPENCASH; GRID_OPENCASH = Mathf.Floor(GRID_OPENCASH * 1.2f); for (int x = 0; x < dimensions.x; x++) { @@ -788,6 +805,24 @@ } /// <summary> /// 在指定的位置播放充能成功的特效. /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <param name="play">是播放还是停止播放</param> public void PlayEnergyEffect(int x, int y, bool play = true) { int dy = dimensions.y - 1 - y; if (!arrTowerEnergyEffect[x, dy]) return; if (play) arrTowerEnergyEffect[x, dy].Play(); else arrTowerEnergyEffect[x, dy].Stop(); } /// <summary> /// Set collider's size and center /// </summary> void ResizeCollider() Assets/Scripts/TowerDefense/Towers/Tower.cs
@@ -195,28 +195,15 @@ if (this.energyCtl) energyCtl.gameObject.SetActive(!play); if( play) { if( !opponentSide) { ((TowerPlacementGrid)GameUI.instance.selfTowerPlaceArea).PlayEnergyEffect(gridPosition.x, true); if (GameUI.instanceExists) ((TowerPlacementGrid)GameUI.instance.selfTowerPlaceArea).PlayEnergyEffect(gridPosition.x, play); else if (EndlessGameUI.instanceExists) ((TowerPlacementGridEndless)EndlessGameUI.instance.selfTowerPlaceArea).PlayEnergyEffect(gridPosition.x, gridPosition.y, play); } else { ((TowerPlacementGrid)OpponentMgr.instance.m_CurrentArea).PlayEnergyEffect(gridPosition.x, true); } } else { if ( !opponentSide) { ((TowerPlacementGrid)GameUI.instance.selfTowerPlaceArea).PlayEnergyEffect(gridPosition.x, false); } else { ((TowerPlacementGrid)OpponentMgr.instance.m_CurrentArea).PlayEnergyEffect(gridPosition.x, false); } } ((TowerPlacementGrid)OpponentMgr.instance.m_CurrentArea).PlayEnergyEffect(gridPosition.x, play); } /// <summary>