wangguan
2020-11-10 65a6f11553bcb46d6244dbafe63b6225dfa4d56e
可以升级的塔播放动画
5 files modified
230 ■■■■■ changed files
Assets/Prefabs/UI/PlacementTileMobile.prefab 113 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs 7 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs 34 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs 59 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs 17 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/PlacementTileMobile.prefab
@@ -30,6 +30,7 @@
  m_Children:
  - {fileID: 4082878821884824}
  - {fileID: 3708897891681601760}
  - {fileID: 675910950832637167}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -54,6 +55,7 @@
  canPlaceRenderer: {fileID: 5722111975221064870}
  canPlaceMat: {fileID: 2100000, guid: 434316934db1c90498f004f124d7c733, type: 2}
  selectMat: {fileID: 2100000, guid: 3b7aa7626a2d4674ca2aa32958f14ca9, type: 2}
  myPS: {fileID: 675910951314242398}
--- !u!1 &1648682030917314
GameObject:
  m_ObjectHideFlags: 0
@@ -216,3 +218,114 @@
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6911264303789898319}
  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &6551026705143052334
PrefabInstance:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Modification:
    m_TransformParent: {fileID: 4376446327882660}
    m_Modifications:
    - target: {fileID: 6019269231563473776, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: playOnAwake
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269231563473778, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalPosition.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269231827229285, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: playOnAwake
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856512, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_Name
      value: Effect_ShengJiTiShi
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856512, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_IsActive
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalPosition.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalPosition.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalPosition.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalRotation.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalRotation.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalRotation.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalRotation.w
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_RootOrder
      value: 2
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalScale.x
      value: 0.12647022
      objectReference: {fileID: 0}
    - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
        type: 3}
      propertyPath: m_LocalScale.z
      value: 0.09259259
      objectReference: {fileID: 0}
    m_RemovedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3}
--- !u!4 &675910950832637167 stripped
Transform:
  m_CorrespondingSourceObject: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
    type: 3}
  m_PrefabInstance: {fileID: 6551026705143052334}
  m_PrefabAsset: {fileID: 0}
--- !u!198 &675910951314242398 stripped
ParticleSystem:
  m_CorrespondingSourceObject: {fileID: 6019269231563473776, guid: 99628a6db7adeb64ebad4ab2dd550ad6,
    type: 3}
  m_PrefabInstance: {fileID: 6551026705143052334}
  m_PrefabAsset: {fileID: 0}
Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs
@@ -146,6 +146,7 @@
            }
        }
        float currentTimeScale = 1.0f;
        protected virtual void OnStartDrag(PointerActionInfo pointer)
        {
            // select towers
@@ -157,7 +158,9 @@
            AudioSourceManager.Ins.Play(AudioEnum.DragTower);
            m_GameUI.CheckAllCanPlace();//检查上阵宝石有么有可以合成的位置
            //Debug.Log("开始拖拽");
            currentTimeScale = Time.timeScale;
            Time.timeScale = 0.5f;
        }
        protected override void OnDrag(PointerActionInfo pointer)
@@ -182,7 +185,7 @@
            this.isInDragState = false;
            //Debug.Log("结束拖拽");
            Time.timeScale = currentTimeScale;
        }
Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
@@ -885,6 +885,8 @@
            }
        }
        PlacementTile currentCanPlace;//记录当前标记
        /// <summary>
        /// 开始拖拽的时候判断哪些可以放置
        /// </summary>
@@ -915,7 +917,36 @@
            }
        }
        PlacementTile currentCanPlace;//记录当前标记
        /// <summary>
        /// 播放升级动画
        /// </summary>
        /// <param name="allTowerP"></param>
        public void PlayPS(List<IntVector2> allTowerP)
        {
            for (int i = 0; i < allTowerP.Count; i++)
            {
                m_Tiles[allTowerP[i].x, allTowerP[i].y].SetParticleSystem(true);
            }
        }
        /// <summary>
        /// /// 停止所有升级动画
        /// </summary>
        public void StopPS()
        {
            int iy = dimensions.y - 1;//3
            for (int ix = 0; ix < dimensions.x; ix++)
            {
                for (int y = iy; y >= dimensions.y - AttackRowNumbers; --y)
                {
                    if (m_arrGridType[ix, y] == PlacementGridType.EGridOpen)
                    {
                        m_Tiles[ix, y].SetParticleSystem(false);
                    }
                }
            }
        }
        /// <summary>
        /// 拖动时候实时检查距离哪个格子近
        /// </summary>
@@ -956,6 +987,7 @@
                    }
                }
            }
            StopPS();
        }
#if UNITY_EDITOR
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -851,21 +851,37 @@
        /// </summary>
        public void CheckAllCanPlace()
        {
            List<IntVector2> allTowerP = new List<IntVector2>();
            for (int i = 0; i < m_listTower.Count; i++)
            if (m_CurrentTower != null)
            {
                if (m_listTower[i].bInAttackMode && towerToMove && m_listTower[i].currentLevel == dragTowerLevel && m_listTower[i].towerName == towerToMove.towerName)
                if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL)
                {
                    //说明可以合成
                    List<IntVector2> allTowerP = new List<IntVector2>();
                    List<IntVector2> allPSTowerP = new List<IntVector2>();//需要播放升级动画的
                    for (int i = 0; i < m_listTower.Count; i++)
                    {
                        if (m_listTower[i].bInAttackMode && towerToMove && m_listTower[i].currentLevel == dragTowerLevel && m_listTower[i].towerName == towerToMove.towerName)
                        {
                            if (towerToMove.gridPosition != m_listTower[i].gridPosition)
                                //说明可以合成
                                allPSTowerP.Add(m_listTower[i].gridPosition);
                        }
                        else
                        {
                            //把不符合条件的传进去
                            allTowerP.Add(m_listTower[i].gridPosition);
                        }
                    }
                (m_CurrentArea as TowerPlacementGridEndless).CheckAllCanPlace(allTowerP);
                    (m_CurrentArea as TowerPlacementGridEndless).PlayPS(allPSTowerP);
                }
                else
                else if (m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Fire || m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb)
                {
                    //把不符合条件的传进去
                    allTowerP.Add(m_listTower[i].gridPosition);
                    //Debug.Log("需要激活兵线下方绿色标识");
                }
            }
            (m_CurrentArea as TowerPlacementGridEndless).CheckAllCanPlace(allTowerP);
        }
        /// <summary>
@@ -873,7 +889,8 @@
        /// </summary>
        public void CloseCanPlaceRenderer()
        {
            (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlaceRenderer();
            if (m_CurrentArea != null)
                (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlaceRenderer();
        }
        /// <summary>
@@ -883,18 +900,22 @@
        public void CheckTowerPlace(PointerInfo pointerInfo)
        {
            //return;
            //下面是为了设置一个虚拟的塔
            if (isFreeAttackGridOnDrag(pointerInfo) && m_CurrentTower.controller.towerFeature == EFeatureTower.NULL)
            if (m_CurrentArea != null && m_CurrentArea is TowerPlacementGridEndless)
            {
                //Debug.Log("得到了一个空的塔位");
                //下面是为了设置一个虚拟的塔
                if (isFreeAttackGridOnDrag(pointerInfo) && m_CurrentTower.controller.towerFeature == EFeatureTower.NULL)
                {
                    //Debug.Log("得到了一个空的塔位");
                (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y);
                //if(temporaryMat)
                    (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y);
                    //if(temporaryMat)
                }
                else
                {
                    (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace();
                }
            }
            else
            {
                (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace();
            }
        }
        /// <summary>
Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs
@@ -61,6 +61,8 @@
        /// </summary>
        public Material selectMat;
        public ParticleSystem myPS;//可以升级的特效
        /// <summary>
        /// Update the state of this placement tile
@@ -84,6 +86,21 @@
            }
        }
        public void SetParticleSystem(bool isOn)
        {
            if (isOn)
            {
                if (myPS.gameObject.activeSelf != isOn) myPS.gameObject.SetActive(isOn);
                myPS.Play();
            }
            else
            {
                myPS.Stop();
                if (myPS.gameObject.activeSelf != isOn) myPS.gameObject.SetActive(isOn);
            }
        }
        /// <summary>
        /// 设置是否可以放置