// Update is called once per frame void LateUpdate() { if (nombreDelEdificio != "") { estaConstruyendo = true; if (Input.GetAxis("Mouse X") != 0 || Input.GetAxis("Mouse Y") != 0) { //generamos un rayo hacia el piso con la posicion del mouse para poner el edificio Ray rayo = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(rayo, out hit, Mathf.Infinity, mascaraDeConstruccion)) //Si esto pasa le asignamos al edificio la posicion { if (Edificio != null) { Edificio.transform.position = hit.point; } } else // esto pasa cuando se sale del mapa { } } if (Edificio == null) // para evitar error cuando se cancela y se va a instanciar otra construccion { return; } if (Input.GetKeyDown(KeyCode.R)) // si presiona esta tecla el edificio que esta ubicando lo puede rotar 90 grados { Edificio.transform.Rotate(new Vector3(0, 90, 0)); } if (Input.GetMouseButtonDown(0) && !Edificio.transform.GetComponentInChildren <Colisionador> ().colision) // terminamos de colocar la edificacion en una posicion fija { if (Edificio.GetComponent <Edificacion>().canConstruct()) { Edificio.transform.GetComponentInChildren <Colisionador> ().setDefaultMaterial(); Edificio.transform.GetComponentInChildren <Colisionador> ().enabled = false; Edificio.GetComponent <Edificacion> ().enabled = true; //aqui activamos el componente externo el edificio ya sea base, generador, cuartel etc actualizarInformacionUI(Edificio); nombreDelEdificio = string.Empty; } else { Debug.Log("No me pude construir"); } estaConstruyendo = false; UIManager.UImanager.panelEdificaciones.SetActive(true); } if (Input.GetMouseButtonDown(1)) //Si hacemos click derecho es porque el usuario cancelo la construccion entonces destruimos el objeto actual y vaciamos el modo de construir hasta nuevo aviso { Destroy(Edificio.gameObject); crearEdificacion(string.Empty); nombreDelEdificio = string.Empty; estaConstruyendo = false; UIManager.UImanager.panelEdificaciones.SetActive(true); } } }