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); }
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; }