private void UpdateTowerPlacement() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.GetComponent <GridSlot> () == null) { DeselectGrid(); return; } if (hit.collider.GetComponent <GridSlot> ().GridSlotFilled) { DeselectGrid(); return; } gridSlotSelector.transform.position = hit.collider.transform.position + new Vector3(0, 0.5f, 0); if (Input.GetMouseButtonDown(0)) { GameObject tower = null; switch (towerSelected) { case TOWERSELECTED.ARCH: tower = Instantiate(archTower, hit.collider.transform.position, Quaternion.identity) as GameObject; break; case TOWERSELECTED.MACHINE: tower = Instantiate(machineTower, hit.collider.transform.position, Quaternion.identity) as GameObject; break; case TOWERSELECTED.LASER: tower = Instantiate(laserTower, hit.collider.transform.position, Quaternion.identity) as GameObject; break; } if (tower == null) { return; } towerSelected = TOWERSELECTED.NONE; gameManager.PlayerGold -= tower.GetComponent <Tower> ().goldCost; hit.collider.GetComponent <GridSlot> ().GridSlotFilled = true; DeselectGrid(); tower.transform.position += new Vector3(0, 1, 0); } } }
private void OnGUI() { GUILayout.BeginArea(new Rect(Screen.width * 0.85f, Screen.height * 0.35f, 1000, 1000)); GUILayout.BeginVertical(); foreach (KeyValuePair <TOWERSELECTED, GameObject> kvp in towerButtons) { if (GUILayout.Button(kvp.Value.GetComponent <Tower> ().towerName + " (" + kvp.Value.GetComponent <Tower> ().goldCost + " gold)", GUILayout.Height(100), GUILayout.Width(200))) { if (gameManager.PlayerGold >= kvp.Value.GetComponent <Tower> ().goldCost) { towerSelected = kvp.Key; } else { towerSelected = TOWERSELECTED.NONE; DeselectGrid(); } } } GUILayout.EndVertical(); GUILayout.EndArea(); }