From c99b622ec5db9282d6466b106558f840a9a21610 Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Wed, 28 Oct 2020 20:13:10 +0800 Subject: [PATCH] 火塔充能满了特效 开塔金币 * 1.2 --- Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs | 39 +++++++++++++++++++++++++++++++++++++-- 1 files changed, 37 insertions(+), 2 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs index dcf9edd..d809aa8 100644 --- a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs +++ b/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() -- Gitblit v1.9.1