From e371272a7885723c7b0ef31a20ae5d0fbead1d30 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Sat, 26 Dec 2020 16:58:41 +0800 Subject: [PATCH] 12.26第二次 --- Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs | 182 +++++++++++++++++++++++++++++++++----------- 1 files changed, 135 insertions(+), 47 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs b/Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs index e98d12c..6a731c6 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs @@ -1,7 +1,6 @@ using UnityEngine; using TowerDefense.Level; -using UnityEditor; -using KTGMGemClient; +using Core.Utilities; namespace TowerDefense.UI.HUD { @@ -57,6 +56,7 @@ /// 可以放置的 /// </summary> public Material canPlaceMat; + public Material canNotPlaceMat; /// <summary> /// 放置在当前位置 @@ -65,6 +65,15 @@ //public ParticleSystem myPS;//可以升级的特效 + public ParticleSystem myOpenPS;//购买后的特效 + public ParticleSystem myPutPS;//交换塔位置后的特效 + + public GameObject myDragSelectPS;//推拽时候移动到当前塔的特效 + + /// <summary> + /// 所在的格子坐标 + /// </summary> + public IntVector2 GridPosition { get; set; } /// <summary> /// Update the state of this placement tile @@ -104,52 +113,96 @@ // } // } + // /// <summary> + // /// 设置是否可以放置 + // /// </summary> + // /// <param name="canPlace"></param> + // public void CheckCanPlace(bool canPlace) + // { + // if (canPlaceRenderer) + // { + // if (canPlaceRenderer.enabled != canPlace) + // canPlaceRenderer.enabled = canPlace; + // if (canPlace) + // { + // SetSelect(false); + // } + // else if (towerVSRenderer.enabled) + // { + // towerVSRenderer.enabled = false; + // } + // } + + // } + + // /// <summary> + // /// 设置当前材质 + // /// </summary> + // /// <param name="isSelect"></param> + // /// <param name="isEmpty"></param> + // public void SetSelect(bool isSelect) + // { + // if (isSelect) + // { + // if (canPlaceRenderer.material != selectMat) + // { + // canPlaceRenderer.material = selectMat; + // } + // //激活绿色的底 + // } + // else + // { + // if (canPlaceRenderer.material != canPlaceMat) + // { + // canPlaceRenderer.material = canPlaceMat; + // } + // if (towerVSRenderer.enabled) + // towerVSRenderer.enabled = false; + // } + // } + /// <summary> - /// 设置是否可以放置 + /// 是否放置塔 /// </summary> - /// <param name="canPlace"></param> - public void CheckCanPlace(bool canPlace) + /// <param name="isOn"></param> + /// <param name="towerName"></param> + public void SetRender(bool isOn, string towerName) { - if (canPlaceRenderer) + if (canPlaceRenderer.enabled != isOn) { - if (canPlaceRenderer.enabled != canPlace) - canPlaceRenderer.enabled = canPlace; - if (canPlace) - { - SetSelect(false); - } - else if (towerVSRenderer.enabled) - { - towerVSRenderer.enabled = false; - } + canPlaceRenderer.enabled = isOn; + } + if (myDragSelectPS.activeSelf != isOn) + { + myDragSelectPS.SetActive(isOn); + } + // if (isOn) + // { + // myDragSelectPS.Play(); + // } + // else + // { + // myDragSelectPS.Stop(); + // } + + if (isOn && towerName != "") + { + //SetTowerVirtualshadow(towerName); + EndlessWaveLineManager.instance.SetWaveLineShow(GridPosition.x, true); + } + else if (!isOn) + { + towerVSRenderer.enabled = false; + EndlessWaveLineManager.instance.SetWaveLineShow(GridPosition.x, false); } } - /// <summary> - /// 设置当前材质 - /// </summary> - /// <param name="isSelect"></param> - /// <param name="isEmpty"></param> - public void SetSelect(bool isSelect) + public void SetWarning(bool isOn) { - if (isSelect) - { - if (canPlaceRenderer.material != selectMat) - { - canPlaceRenderer.material = selectMat; - } - } - else - { - if (canPlaceRenderer.material != canPlaceMat) - { - canPlaceRenderer.material = canPlaceMat; - } - if (towerVSRenderer.enabled) - towerVSRenderer.enabled = false; - } + canPlaceRenderer.material = isOn ? canNotPlaceMat : canPlaceMat; } + /// <summary> /// 塔的虚影 /// </summary> @@ -160,18 +213,18 @@ /// </summary> public Material towerVSMat; - public Texture fire, wood; + public Texture fire, wood, water; + private Vector3 fireScale = new Vector3(1f, 1f, 1f); + private Vector3 woodScale = new Vector3(0.8f, 1.12f, 1f); + private Vector3 waterScale = new Vector3(1.55f, 1.35f, 1f); - private Vector3 fireScale = new Vector3(1.02f, 0.926f, 1f); - private Vector3 woodScale = new Vector3(0.82f, 1.03f, 1f); - private Vector3 waterScale = new Vector3(1.0f, 1.0f, 1.88f); + private Vector3 fireOffectp = new Vector3(-0.05f, 0f, 0.15f); + private Vector3 woodOffectp = new Vector3(0.0f, 0f, 0.3f); + private Vector3 waterOffectp = new Vector3(0.0f, 0f, 0.47f); - private Vector3 fireOffectp = new Vector3(-0.05f, 0f, 0f); - private Vector3 woodOffectp = new Vector3(0.0f, 0f, 0.19f); public void SetTowerVirtualshadow(string towerName) { - if (towerName.StartsWith("GrowUpTower")) { if (!towerVSRenderer.enabled) towerVSRenderer.enabled = true; @@ -184,11 +237,10 @@ } else if (towerName.StartsWith("BlinkTower")) { + //木元素 if (!towerVSRenderer.enabled) towerVSRenderer.enabled = true; - //木元素 towerVSMat.SetTexture(shaderPropertyName, wood); - //木元素 towerVSRenderer.transform.localScale = woodScale; towerVSRenderer.transform.localPosition = woodOffectp; @@ -196,7 +248,11 @@ else if (towerName.StartsWith("CopyCatTower")) { //水元素 + if (!towerVSRenderer.enabled) towerVSRenderer.enabled = true; + towerVSMat.SetTexture(shaderPropertyName, water); + towerVSRenderer.transform.localScale = waterScale; + towerVSRenderer.transform.localPosition = waterOffectp; } } string shaderPropertyName; @@ -213,6 +269,14 @@ towerVSRenderer.enabled = false; } + private GameObject buyMesh; + public GameObject BuyMesh + { + get + { + return buyMesh; + } + } /// <summary> /// 根据传入的参数来设置当前Grid对应的显示信息 @@ -224,10 +288,15 @@ switch (newtype) { case PlacementGridType.EGridWaitBuy: + GameObject prefab = Resources.Load<GameObject>("Prefabs/BuyMesh"); + buyMesh = Instantiate(prefab, transform); + //Debug.Log("未开启塔位" + buyMesh); + if (tileRenderer != null && waitBuyMat != null) tileRenderer.sharedMaterial = waitBuyMat; break; case PlacementGridType.EGridOpen: + //Debug.Log("开了塔" + EndlessLevelManager.instanceExists); if (EndlessLevelManager.instanceExists) { tileRenderer.enabled = false; @@ -237,6 +306,12 @@ if (tileRenderer != null && openMat != null) tileRenderer.sharedMaterial = openMat; } + + SetWarning(false); + if (buyMesh != null) + { + Destroy(buyMesh); + } break; case PlacementGridType.EGridDestroyed: if (tileRenderer != null && destroyedMat != null) @@ -244,5 +319,18 @@ break; } } + + public void BuyPs() + { + myOpenPS?.Play(); + AudioSourceManager.Ins.Play(AudioEnum.OpenTowerPlace); + EndlessRandomTower.instance.CheckMoney(); + } + + public void PutPs() + { + myPutPS?.Play(); + } + } } \ No newline at end of file -- Gitblit v1.9.1