예제 #1
0
    // 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);
            }
        }
    }