From dcbbe82ceca921e73e1789ae87ea8ac6a59c7bff Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Thu, 17 Dec 2020 15:54:41 +0800 Subject: [PATCH] 增加技能特效 --- Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs | 130 +++++++++++++++++++++++++++---------------- 1 files changed, 81 insertions(+), 49 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs index 5181e38..c1975c4 100644 --- a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs +++ b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs @@ -41,6 +41,7 @@ // River Add for Mouse Start Drag & Draged. controller.startedDrag += OnStartDrag; controller.dragged += this.OnDrag; + controller.pressed += OnPressed; controller.released += this.OnEndDrag; } } @@ -62,6 +63,7 @@ controller.startedDrag -= this.OnStartDrag; controller.dragged -= this.OnDrag; + controller.pressed -= OnPressed; controller.released -= this.OnEndDrag; } @@ -110,15 +112,12 @@ if (UnityInput.GetKeyDown(key)) { Tower controller = EndlessLevelManager.instance.TowerLibrary[key - KeyCode.Alpha1]; - if (EndlessLevelManager.instance.Currency.CanAfford(controller.purchaseCost)) + if (m_GameUI.isBuilding) { - if (m_GameUI.isBuilding) - { - m_GameUI.CancelGhostPlacement(); - } - EndlessGameUI.instance.SetToBuildMode(controller); - EndlessGameUI.instance.TryMoveGhost(InputController.instance.basicMouseInfo); + m_GameUI.CancelGhostPlacement(); } + EndlessGameUI.instance.SetToBuildMode(controller); + EndlessGameUI.instance.TryMoveGhost(InputController.instance.basicMouseInfo); break; } } @@ -139,60 +138,68 @@ void OnMouseMoved(PointerInfo pointer) { // We only respond to mouse info - var mouseInfo = pointer as MouseCursorInfo; + // var mouseInfo = pointer as MouseCursorInfo; - if ((mouseInfo != null) && (m_GameUI.isBuilding)) - { - m_GameUI.TryMoveGhost(pointer, false); - } + // if ((mouseInfo != null) && (m_GameUI.isBuilding)) + // { + // m_GameUI.TryMoveGhost(pointer, false); + // } } float currentTimeScale = 1.0f; + float dragTime = 0; + bool isDraging = false; + protected virtual void OnStartDrag(PointerActionInfo pointer) { - if (GameConfig.IsNewbie) + if (!isDraging) { - if (!GameConfig.CanDragTower) + Debug.Log("开始拖拽"); + isDraging = true; + + if (GameConfig.IsNewbie) { - Debug.Log("新手不可以拖拽"); - return; + if (!GameConfig.CanDragTower) + { + Debug.Log("新手不可以拖拽"); + return; + } } + // select towers + m_GameUI.TrySelectTower(pointer); + // River: 为了开始拖动后可以直接显示GhostTower + m_GameUI.TryMoveGhost(pointer, false); - } - // select towers - m_GameUI.TrySelectTower(pointer); - // River: 为了开始拖动后可以直接显示GhostTower - m_GameUI.TryMoveGhost(pointer, false); - - if (m_GameUI.HasTower) - { - EndlessUIStart.instance.SetDarkGround(true); - - this.isInDragState = true; - AudioSourceManager.Ins.Play(AudioEnum.DragTower); - m_GameUI.CheckAllCanPlace();//检查上阵宝石有么有可以合成的位置 - - if (!GameConfig.IsNewbie) + if (m_GameUI.HasTower) { - //新手引导这里会把引导的速度变慢 - currentTimeScale = Time.timeScale; - Time.timeScale = 0.5f; - } - else - { - GuideCtrl.Ins.BeginDrag11_1(); - } + EndlessUIStart.instance.SetDarkGround(true); + this.isInDragState = true; + AudioSourceManager.Ins.Play(AudioEnum.DragTower); + m_GameUI.CheckAllCanPlace();//检查上阵宝石有么有可以合成的位置 + + if (!GameConfig.IsNewbie) + { + //新手引导这里会把引导的速度变慢 + currentTimeScale = Time.timeScale; + Time.timeScale = 0.5f; + } + else + { + GuideCtrl.Ins.BeginDrag5_1(); + } + } } } protected override void OnDrag(PointerActionInfo pointer) { - if ((pointer != null) && (m_GameUI.isBuilding)) + if (isDraging && (pointer != null) && (m_GameUI.isBuilding)) { m_GameUI.TryMoveGhost(pointer, false); + //m_GameUI.CheckTowerPlace(pointer); + m_GameUI.CheckTowerPlaceNew(pointer); - m_GameUI.CheckTowerPlace(pointer); } } @@ -203,21 +210,46 @@ protected void OnEndDrag(PointerActionInfo pointer) { // EndDrag 只能放置相关的GhostTower. - if (this.isInDragState) + if (isDraging) { - EndlessUIStart.instance.SetDarkGround(false); + if (this.isInDragState) + { + EndlessUIStart.instance.SetDarkGround(false); + m_GameUI.CloseCanPlace();//关闭所有绿色底板 - AudioSourceManager.Ins.Play(AudioEnum.PutTower); - m_GameUI.CloseCanPlaceRenderer();//关闭所有宝石示意 - m_GameUI.onEndTowerDrag(pointer); + AudioSourceManager.Ins.Play(AudioEnum.PutTower); + m_GameUI.CloseCanPlaceRenderer();//关闭所有宝石示意 + m_GameUI.onEndTowerDrag(pointer); - this.isInDragState = false; + this.isInDragState = false; - if (!GameConfig.IsNewbie) - Time.timeScale = currentTimeScale; + if (!GameConfig.IsNewbie) + Time.timeScale = currentTimeScale; + } + Invoke("ResetDraging", 0.2f); } } + private void ResetDraging() + { + isDraging = false; + Debug.Log("isDraging = false"); + if (m_GameUI.HasTower) + { + Debug.LogError("推拽已经结束了,为什么m_GameUI.HasTower是true????,强行恢复塔位"); + m_GameUI.EndDragCancelPlaceTower(); + } + if (m_GameUI.isBuilding) + { + Debug.LogError("推拽已经结束了,为什么 m_GameUI.isBuilding是true????"); + } + } + + private void OnPressed(PointerActionInfo pointer) + { + m_GameUI.OnPressed(pointer); + } + /// <summary> /// Select towers or position ghosts /// </summary> -- Gitblit v1.9.1