public void ChangeTower(GameObject tower, string type) { NodeV2 node = tower.transform.parent.transform.gameObject.GetComponent <NodeV2>(); node.RemoveTower(); Vector3 pos = node.GetTowerObject().transform.position; GameObject newTower = null; switch (type) { case "fire": newTower = Instantiate(fire_tower, pos, Quaternion.identity) as GameObject; break; case "ice": newTower = Instantiate(ice_tower, pos, Quaternion.identity) as GameObject; break; case "nature": newTower = Instantiate(nature_tower, pos, Quaternion.identity) as GameObject; break; case "base": newTower = Instantiate(base_tower, pos, Quaternion.identity) as GameObject; break; } if (!newTower.Equals(null)) { newTower.transform.parent = node.transform; } node.SetTowerObject(newTower); }
// Update is called once per frame void Update() { if (!IsPaused()) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit, Mathf.Infinity, nodeMask)) { // HOVERING MECHANIC currentNode = hit.transform.parent.gameObject.GetComponent <NodeV2>(); if (currentNode == null) { if (previousNode != null) { previousNode.GetComponentInChildren <NodeHoverV2>().StopHovering(); previousNode = null; } } else if (previousNode == null) { previousNode = currentNode; hit.transform.gameObject.GetComponent <NodeHoverV2>().Hover(); } else if (currentNode.GetInstanceID() != previousNode.GetInstanceID()) { previousNode.GetComponentInChildren <NodeHoverV2>().StopHovering(); hit.transform.gameObject.GetComponent <NodeHoverV2>().Hover(); previousNode = currentNode; } // SELECTION MECHANIC if (Input.GetMouseButtonDown(0)) { if (EventSystem.current.IsPointerOverGameObject()) { return; } selectedNode = currentNode; if (selectedNode.towerPlaced) { towerSelected = selectedNode.GetTowerObject(); // //Test // //EventSystem.current.SetSelectedGameObject(towerSelected); // //Test // //Tower Status Additon, only for upgraded towers if (towerSelected.GetComponent <TowerController>().GetTowerType() != "base_tower") { selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName; SetNextPurchaseCost(towerSelected); } if (!towerSelected.GetComponent <Outline>().isActiveAndEnabled) { towerSelected.GetComponent <Outline>().enabled = true; SpawnMenu(towerSelected); } else { towerSelected.GetComponent <Outline>().enabled = false; towerSelected = null; DeSpawnMenu(); } } } // 2. IF NO TOWER && SPAWNABLE, SPAWN TOWER else if (spawnable && selectedNode.GetIsTowerPlacable()) { Vector3 position = selectedNode.transform.position + selectedNode.GetEnvOffset(); selectedNode.DeleteEnvObject(); GameObject temp = Instantiate(towerToBuild, position, Quaternion.identity) as GameObject; selectedNode.SetTowerObject(temp); //Mark the node as having a placed tower selectedNode.towerPlaced = true; //Make tower child to Node temp.transform.parent = selectedNode.transform; spawnable = false; } } } else { Debug.Log(Time.timeScale); } }