示例#1
0
        public void AñadirConstruccion(Construccion edificio, Vector3 posicion, bool encender)
        {
            edificio.GetComponent <Renderer>().receiveShadows    = true;
            edificio.GetComponent <Renderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;

            posicion = Posicion.Edificio(edificio, posicion);
            ComprobarLucesEdificio(encender, edificio);

            Construccion edificioConstruido = Instantiate(edificio, posicion, Quaternion.identity);

            edificioConstruido.transform.Rotate(Vector3.up, edificio.rotacionAdicional + edificio.rotacionColocacion, Space.World);
            edificioConstruido.posicionX = (int)posicion.x;
            edificioConstruido.posicionZ = (int)posicion.z;
            edificioConstruido.id2       = contadorIdsConstrucciones;
            contadorIdsConstrucciones   += 1;

            edificios[(int)posicion.x, (int)posicion.z] = edificioConstruido;
            colisiones.Añadir(edificios, edificio, posicion);
        }
示例#2
0
        public void AñadirConstruccion(Construccion edificio, Vector3 posicion)
        {
            if (edificio.gameObject.GetComponentsInChildren <Light>().Length > 0)
            {
                foreach (Light luz in edificio.gameObject.GetComponentsInChildren <Light>())
                {
                    luz.intensity = 0;
                }
            }

            edificio.GetComponent <Renderer>().receiveShadows    = false;
            edificio.GetComponent <Renderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;

            posicion = Posicion.Edificio(edificio, posicion);

            Construccion edificioVistaPrevia = Instantiate(edificio, posicion, Quaternion.identity);

            edificioVistaPrevia.transform.Rotate(Vector3.up, edificio.rotacionAdicional + edificio.rotacionColocacion, Space.World);

            edificiosPrevio[(int)posicion.x, (int)posicion.z] = edificioVistaPrevia;
            //colisiones.Añadir(edificiosPrevio, edificio, posicion);

            //---------------------------------

            Material[] materiales = edificiosPrevio[(int)posicion.x, (int)posicion.z].gameObject.GetComponent <MeshRenderer>().materials;

            materiales[0].SetFloat("_Mode", 3);
            materiales[0].SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
            materiales[0].SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
            materiales[0].SetInt("_ZWrite", 0);
            materiales[0].DisableKeyword("_ALPHATEST_ON");
            materiales[0].DisableKeyword("_ALPHABLEND_ON");
            materiales[0].EnableKeyword("_ALPHAPREMULTIPLY_ON");
            materiales[0].renderQueue = 3000;
            materiales[0].color       = new Color(1.0f, 1.0f, 1.0f, 0.5f);

            materiales[0].DisableKeyword("_EMISSION");
            materiales[0].globalIlluminationFlags = MaterialGlobalIlluminationFlags.EmissiveIsBlack;

            edificiosPrevio[(int)posicion.x, (int)posicion.z].gameObject.GetComponent <MeshRenderer>().materials = materiales;
        }