chenxin
2020-10-28 c99b622ec5db9282d6466b106558f840a9a21610
火塔充能满了特效
开塔金币 * 1.2
3 files modified
62 ■■■■■ changed files
Assets/Scenes/Levels/Battle/Endless.unity 2 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs 37 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/Tower.cs 23 ●●●● 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>