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++) { @@ -671,7 +679,7 @@ img.transform.SetParent(container.transform, true); tpos = img.transform.position; tpos.x = m_arrTowerBulletUIPos[x, y].x + 4.2f; tpos.z = m_arrTowerBulletUIPos[x, y].y + 1.1f - y * 1.66f; tpos.z = m_arrTowerBulletUIPos[x, y].y + 1.1f - y * 1.66f; tpos.y = 30f; img.transform.position = tpos; img.transform.localScale = Vector3.one; @@ -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
@@ -134,7 +134,7 @@ public int uiProOffset { get { return this.progressOffset; } get { return this.progressOffset; } set { this.progressOffset = value; } } @@ -190,33 +190,20 @@ /// 播放充能状态特效. /// </summary> /// <param name="play"></param> public void PlayEnergyEffect( bool play) public void PlayEnergyEffect(bool play) { if (this.energyCtl) energyCtl.gameObject.SetActive(!play); if( play) if (!opponentSide) { if( !opponentSide) { ((TowerPlacementGrid)GameUI.instance.selfTowerPlaceArea).PlayEnergyEffect(gridPosition.x, true); } else { ((TowerPlacementGrid)OpponentMgr.instance.m_CurrentArea).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 { 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> @@ -289,7 +276,7 @@ } return; } } public int GetTowerUICtrlProgress() { @@ -306,7 +293,7 @@ return 0; } public void SetTowerUICtlProcess( int pro) public void SetTowerUICtlProcess(int pro) { // 根据是否是子弹塔防来决定是否显示相应的界面 BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x, gridPosition.y); @@ -317,7 +304,7 @@ progressOffset = pro; } EnergyUICtl euc = placementArea.GetEnergyUICtl(gridPosition.x, gridPosition.y); EnergyUICtl euc = placementArea.GetEnergyUICtl(gridPosition.x, gridPosition.y); if ((eTowerFuntion == ETowerFuntion.ENERGY) && (euc != null)) { euc.SetCtlProcess(pro); @@ -328,7 +315,7 @@ return; return; }