From ca7b565cd73e47a4c83189e35544c892b781cea1 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Tue, 22 Dec 2020 10:00:23 +0800 Subject: [PATCH] 修改拖拽 增加未开启塔位增加红色标记 --- Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs | 42 ++++++++++++++++++++++++++++++++++-------- 1 files changed, 34 insertions(+), 8 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs index 3814f55..399979d 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs @@ -189,6 +189,9 @@ /// </summary> Camera m_Camera; + //Camera m_CameraBG; + + /// <summary> /// Current tower placeholder. Will be null if not in the <see cref="State.Building" /> state. /// </summary> @@ -1149,19 +1152,21 @@ else if (m_GridPosition.y == 2 || m_GridPosition.y == 3) { //Debug.Log("已上阵区域,如果是空格子就强行吸附,先判断是否有塔"); - + //pointerInfo.currentPosition += new Vector2(0, -25f); checkTowerPlaceTower = isFreeAttackGridOnDrag(pointerInfo); if (checkTowerPlaceTower != null) { //Debug.Log(checkTowerPlaceTower.name); + //Debug.Log($"checkTowerPlaceTower.name:{checkTowerPlaceTower.name} m_GridPosition:{m_GridPosition}"); if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) { if (checkTowerPlaceTower.bInAttackMode) { + //Debug.Log("检测到了塔"); //鼠标检测到了塔 - (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, false, ""); + (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(checkTowerPlaceTower.gridPosition.x, checkTowerPlaceTower.gridPosition.y, false, ""); } else { @@ -1209,9 +1214,13 @@ } else { - CloseCanPlace(); + //CloseCanPlace(); //Debug.Log("上阵区域,没有开放的塔位"); + + (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, true, ""); + + m_CurrentTower.transform.position = (m_CurrentArea as TowerPlacementGridEndless).GridToWorld(m_GridPosition, m_CurrentTower.controller.dimensions); } } } @@ -1367,7 +1376,7 @@ if (sTower == null) return false; - Debug.Log("开始检测是否可以交换塔"); + //Debug.Log("开始检测是否可以交换塔"); //if (sTower.bInAttackMode == towerToMove.bInAttackMode) { IntVector2 v1 = new IntVector2(towerToMove.gridPosition.x, towerToMove.gridPosition.y); @@ -1580,6 +1589,7 @@ return controller; } + private Vector2 dragOffect = new Vector2(0, -55f); /// <summary> /// Position the ghost tower at the given pointer /// </summary> @@ -1592,15 +1602,29 @@ return; //throw new InvalidOperationException("Trying to move the tower ghost when we don't have one"); } + // 我操,终于可以了!ATTENTION TO OPP: + PointerInfo tp = new PointerActionInfo(); + tp.currentPosition = pointerInfo.currentPosition + dragOffect; + tp.previousPosition = pointerInfo.previousPosition; + tp.delta = pointerInfo.delta; + tp.startedOverUI = pointerInfo.startedOverUI; - UIPointer pointer = WrapPointer(pointerInfo); + UIPointer npt = new UIPointer + { + overUI = false, + pointer = tp, + overWaveLine = false, + ray = m_Camera.ScreenPointToRay(tp.currentPosition) + }; + + //UIPointer pointer = WrapPointer(tp); // Do nothing if we're over UI - if (pointer.overUI && hideWhenInvalid) + if (npt.overUI && hideWhenInvalid) { m_CurrentTower.Hide(); return; } - MoveGhost(pointer, hideWhenInvalid); + MoveGhost(npt, hideWhenInvalid); } /// <summary> @@ -2473,6 +2497,8 @@ state = State.Normal; m_Camera = GameObject.Find("SceneCamera3D").GetComponent<Camera>(); + //m_Camera = GameObject.Find("BackCamera").GetComponent<Camera>(); + //m_Camera = GetComponent<Camera>(); TowerDestroyArr = new bool[5, AttackRowNumbers]; } @@ -2588,7 +2614,7 @@ // WORK START: 从这里开始,移动的时候与场景内的WaveSelEffect射线做碰撞。 // Raycast onto placement layer PlacementAreaRaycast(ref npt); - + //Debug.Log("npt.raycast:" + npt.raycast); if (npt.raycast != null) { MoveGhostWithRaycastHit(npt.raycast.Value); -- Gitblit v1.9.1