From 7d526eef93f8071121dfcfcd4a039b9e51dc3d67 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Mon, 07 Dec 2020 18:06:09 +0800 Subject: [PATCH] 修复了新手引导多次点击开宝箱页面BUG 所有塔不论上不上阵均受缩放影响 冰冻效果只显示1次 结算页面动效修改 修改地面 --- Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 44 insertions(+), 11 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs index 9ed1409..6a90795 100644 --- a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs +++ b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs @@ -5,7 +5,6 @@ using TowerDefense.Level; using TowerDefense.UI.HUD; using UnityEngine; -using UnityEngine.UI; namespace TowerDefense.Towers.Placement { @@ -14,7 +13,7 @@ /// Its origin is centered in the middle of the lower-right cell. It can be oriented in any direction /// </summary> [RequireComponent(typeof(BoxCollider))] - public class TowerPlacementGridEndless : MonoBehaviour, IPlacementArea + public class TowerPlacementGridEndless : Singleton<TowerPlacementGridEndless>, IPlacementArea { public static float GRID_OPENCASH = 200; @@ -59,7 +58,7 @@ /// Size of the edge of a cell /// </summary> [Tooltip("The size of the edge of one grid cell for area. Should match the physical grid size of towers")] - public float gridSize = 1; + public float gridSize = 1;//1.109 /// <summary> /// Inverted grid size, to multiply with @@ -86,8 +85,15 @@ private float[,] m_arrCoinGenTime; + public GameObject GridContainer; + /// <summary> - /// 每一个Tile格子的中心店的世界坐标 + /// 所有格子对应的世界坐标 + /// </summary> + private Vector3[,] GridWorldPosArr; + + /// <summary> + /// 每一个Tile格子的中心店的屏幕坐标 /// </summary> private Vector2[,] arrGridCentPos; @@ -320,8 +326,6 @@ return false; } - - /// <summary> /// 是否是等待购买的攻击塔位. @@ -569,8 +573,9 @@ /// <summary> /// Initialize values /// </summary> - protected virtual void Awake() + protected override void Awake() { + base.Awake(); ResizeCollider(); // Initialize empty bool array (defaults are false, which is what we want) @@ -586,6 +591,7 @@ { // 初始化塔位类型. initTileGridType(); + InitGridWorldPos(); // Precalculate inverted grid size, to save a division every time we translate coords m_InvGridSize = 1 / gridSize; @@ -594,6 +600,35 @@ Invoke("preCalculateGridUIPos", 0.3f); EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.EndlessCritBulletNumChange, OnCritBulletNumChange); EventCenter.Ins.Add((int)KTGMGemClient.EventType.OpenAllTowerGrid, OpenAllTowerGrid); + } + + /// <summary> + /// 初始化所有格子的世界坐标(中心) + /// </summary> + private void InitGridWorldPos() + { + GridWorldPosArr = new Vector3[dimensions.x, dimensions.y]; + + for (int i = 0; i < dimensions.x; ++i) + { + for (int j = 0; j < dimensions.y; ++j) + { + GridWorldPosArr[i, j] = GridToWorld(new IntVector2(i, j), new IntVector2(1, 1)); + } + } + } + + /// <summary> + /// 根据坐标获取格子世界坐标(中心) + /// </summary> + /// <param name="x"></param> + /// <param name="y"></param> + /// <returns></returns> + public Vector3 GetGridWorldPos(int x, int y) + { + if (x < 0 || x >= dimensions.x || y < 0 || y >= dimensions.y) return new Vector3(); + + return GridWorldPosArr[x, y]; } /// <summary> @@ -620,7 +655,7 @@ { arrGridCentPos = new Vector2[dimensions.x, dimensions.y]; - Vector3 targetPos = GridToWorld(new IntVector2(0, 0), new IntVector2(1, 1)); + Vector3 targetPos = GetGridWorldPos(0, 0); if (!ViewPortAdj.instance.bAdjViewPort) ViewPortAdj.instance.adjViewportRect(); @@ -915,11 +950,9 @@ for (int tx = 0; tx < dimensions.x; tx++) { - // cx test m_arrGridType[tx, sy - 1] = PlacementGridType.EGridWaitBuy; m_arrGridType[tx, sy] = PlacementGridType.EGridOpen; } - // m_arrGridType[2, 3] = PlacementGridType.EGridOpen; ++GameConfig.EndlessOpenAttackTowerCount; } @@ -1018,7 +1051,7 @@ { for (int x = 0; x < dimensions.x; x++) { - Vector3 targetPos = GridToWorld(new IntVector2(x, y), new IntVector2(1, 1)); + Vector3 targetPos = GetGridWorldPos(x, y); targetPos.z -= 1.0f; PlacementTile newTile = Instantiate(tileToUse); newTile.transform.parent = tilesParent.transform; -- Gitblit v1.9.1