From 6f32c1848f141eb7c4b2fe32875b2dfde5f5226c Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Wed, 11 Nov 2020 20:12:27 +0800 Subject: [PATCH] 拖拽BUG --- Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs | 57 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 42 insertions(+), 15 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs index 2c9d9f1..d3b37f9 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs @@ -1,4 +1,5 @@ -using Core.Health; +using System.Globalization; +using Core.Health; using Core.Input; using Core.Utilities; using DG.Tweening; @@ -177,6 +178,12 @@ /// Current tower placeholder. Will be null if not in the <see cref="State.Building" /> state. /// </summary> TowerPlacementGhost m_CurrentTower; + + public bool HasTower{ + get{ + return m_CurrentTower!=null; + } + } // TowerList用于简单记录相关的数据 protected List<Tower> m_listTower = new List<Tower>(); @@ -891,13 +898,19 @@ /// </summary> public void CloseCanPlaceRenderer() { - if (m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Fire || m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb) + if (m_CurrentTower && m_CurrentTower.controller && m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Fire || m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb) { - //Debug.Log("需要激活兵线下方绿色标识"); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessStartDragSkill, false); } + if (m_CurrentArea != null) (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlaceRenderer(); + else + { + GameObject placeObj = GameObject.FindGameObjectWithTag("PlaceTower"); + if (placeObj != null) + (placeObj.GetComponent<IPlacementArea>() as TowerPlacementGridEndless).CloseCanPlaceRenderer(); + } } /// <summary> @@ -914,16 +927,36 @@ { //Debug.Log("得到了一个空的塔位"); - (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y); + (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, false, ""); //if(temporaryMat) + } + else if ((m_GridPosition.x >= 0) && (m_GridPosition.y >= 0)) + { + if (m_CurrentArea.isFreeAtackPos(m_GridPosition.x, m_GridPosition.y)) + { + (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, true, towerToMove.towerName); + } + else + { + (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace(); + } } else { (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace(); } } - + else + { + //Debug.Log("什么情况"); + if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) + { + dragTowerPlacement.CloseCanPlace(); + } + } } + + TowerPlacementGridEndless dragTowerPlacement; /// <summary> /// 目标位置是否是可攻击属性的空塔位 @@ -947,15 +980,6 @@ return false; } } - - if ((m_GridPosition.x >= 0) && (m_GridPosition.y >= 0)) - { - if (m_CurrentArea.isFreeAtackPos(m_GridPosition.x, m_GridPosition.y)) - { - return true; - } - } - return false; } @@ -1763,7 +1787,10 @@ // 获取相应的放置区域。 GameObject placeObj = GameObject.FindGameObjectWithTag("PlaceTower"); if (placeObj != null) + { m_CurrentArea = placeObj.GetComponent<IPlacementArea>(); + dragTowerPlacement = placeObj.GetComponent<IPlacementArea>() as TowerPlacementGridEndless; + } placeObj = GameObject.FindGameObjectWithTag("PlaceTowerOpponent"); EventCenter.Ins.Add((int)KTGMGemClient.EventType.EndlessHeartAllLose, AllHeartLose); } @@ -2163,7 +2190,7 @@ } } // 炸弹是区域攻击显示: - if (m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb) + else if (m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb) { // 测试代码与战场区域碰撞,碰撞后显示攻击区域: BattleAreaRaycast(ref npt); -- Gitblit v1.9.1