void OnCollisionEnter(Collision col) { GM scriptGM; if (col.gameObject.name != "bicho") { if (sonido) { AudioSource.PlayClipAtPoint(sonido, posicion.position, volumen); } scriptGM = GameObject.Find("GM").GetComponent <GM> (); //busca el objeto del script y lo asigna a la variable posYcolor posYcolorGris = GameObject.Find(gameObject.name).GetComponent <posYcolor> (); //LO BUSCO Y ASIGNO LOS VALORES //scriptGM.reemplazarPorBloqueRoto(gameObject.name, transform, posYcolorGris); GameObject bloqueRoto = scriptGM.bloqueRoto; //ASI SE CAMBIA ENTRE MESH gameObject.GetComponent <MeshFilter>().sharedMesh = bloqueRoto.GetComponent <MeshFilter>().sharedMesh; //muestra la explosionas Instantiate(explosion, transform.position, transform.rotation); //Destroy(gameObject); Colisiones++; } if (Colisiones == 2) { // al contar la segunda colision, destruye el bloque gris scriptGM = GameObject.Find("GM").GetComponent <GM> (); //busca el objeto del script y lo asigna a la variable scriptGM.puntaje++; scriptGM.puntajeTotal++; scriptGM.descontarBloque(); Destroy(gameObject); } }
// guardarJuego = guarda las posiciones y los colores de los bloques public bool guardarJuego() { string sGuardado = ""; IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream(Application.persistentDataPath + "/saves/slot1.bin", FileMode.Create, FileAccess.Write, FileShare.None); int pos; int color; for (int i = 0; i < 220; i++) { try //BUSCO LOS BLOQUES QUE HAYAN QUEDADO EN EL JUEGO { posYcolor scriptPosYcolor = GameObject.Find(i.ToString() + "(Clone)").GetComponent <posYcolor>(); pos = scriptPosYcolor.pos; color = scriptPosYcolor.color; sGuardado += cargarCeros(pos) + ","; sGuardado += cargarCeros(color) + "|"; } catch { sGuardado += cargarCeros(i) + ","; sGuardado += cargarCeros(0) + "|"; } } try { formatter.Serialize(stream, sGuardado); stream.Close(); return(true); } catch { return(false); } }
// cargarParticulas = CARGO LAS CAPSULAS public void cargarParticulas(string nombre, posYcolor scriptPosYcolor) { bloque Bloque = GameObject.Find(nombre + "(Clone)").GetComponent <bloque>(); switch (scriptPosYcolor.color) { case 1: Bloque.explosion = expRojo; break; case 2: Bloque.explosion = expVerde; break; case 3: Bloque.explosion = expAzul; break; case 4: Bloque.explosion = expAmarillo; break; case 5: Bloque.explosion = expNaranja; break; case 6: Bloque.explosion = expMarron; break; case 7: Bloque.explosion = expVerdeOscuro; break; case 8: Bloque.explosion = expCeleste; break; case 9: Bloque.explosion = expRosa; break; case 10: Bloque.explosion = expVioleta; break; case 11: Bloque.explosion = expBlanco; break; case 12: //Bloque.explosion = expGris; break; //case 13: // rend.sharedMaterial = negro; // break; } }
//continuarJuego = carga el juego del archivo slot.bin de la carpeta saves public void continuarJuego2() { IFormatter formatter = new BinaryFormatter(); int n = PlayerPrefs.GetInt("continuarNivel"); Stream stream = new FileStream(Application.persistentDataPath + "/saves/slot1.bin", FileMode.Open, FileAccess.Read, FileShare.Read); int contadorBloques = 0; for (byte i = 0; i < 220; i++) { bloque[i] = (Bloque)formatter.Deserialize(stream); if (bloque[i].color != 0) { Vector3 pos = new Vector3(vPosBloques[bloque[i].pos].x, vPosBloques[bloque[i].pos].y, 0); Renderer rend = objBloque.GetComponent <Renderer>(); switch (bloque[i].color) { case 1: rend.sharedMaterial = rojo; break; case 2: rend.sharedMaterial = verde; break; case 3: rend.sharedMaterial = azul; break; case 4: rend.sharedMaterial = amarillo; break; case 5: rend.sharedMaterial = naranja; break; case 6: rend.sharedMaterial = marron; break; case 7: rend.sharedMaterial = verdeOscuro; break; case 8: rend.sharedMaterial = celeste; break; case 9: rend.sharedMaterial = rosa; break; case 10: rend.sharedMaterial = violeta; break; case 11: rend.sharedMaterial = blanco; break; case 12: rend.sharedMaterial = gris; break; case 13: rend.sharedMaterial = negro; break; } objBloque.name = i.ToString(); Instantiate(objBloque, pos, Quaternion.identity); //CREO EL BLOQUE Renderer bloqueDeJuego = GameObject.Find(i.ToString() + "(Clone)").GetComponent <Renderer>(); //BUSCO EL BLOQUE CREADO PARA bloqueDeJuego.gameObject.AddComponent <posYcolor>(); //AGREGARLE EL COMPONENTE posYcolor posYcolor scriptPosYcolor = GameObject.Find(i.ToString() + "(Clone)").GetComponent <posYcolor>(); //LO BUSCO Y ASIGNO LOS VALORES scriptPosYcolor.pos = i; scriptPosYcolor.color = bloque[i].color; cargarCapsulas(objBloque.name); //CARGO LAS CAPSULAS DEL NIVEL cargarParticulas(objBloque.name, scriptPosYcolor); if (bloque[i].color != 13) { contadorBloques++; //SI EL COLOR ES DISTINTO DE NEGRO LO CUENTA COMO BLOQUE } } } stream.Close(); GM scriptGM = GameObject.Find("GM").GetComponent <GM>(); scriptGM.bloques = contadorBloques; }
//continuarJuego = carga el juego del archivo slot.bin de la carpeta saves public void continuarJuego() { IFormatter formatter = new BinaryFormatter(); int n = PlayerPrefs.GetInt("continuarNivel"); Stream stream = new FileStream(Application.persistentDataPath + "/saves/slot1.bin", FileMode.Open, FileAccess.Read, FileShare.Read); string nivelString = (string)formatter.Deserialize(stream); int contadorBloques = 0; char[] nivelChar = nivelString.ToCharArray(); int pos; int color; string[] posChar = new string[3]; string[] colorChar = new string[3]; int e = 0; while (e < nivelChar.Length) { posChar[0] = nivelChar[e].ToString(); posChar[1] = nivelChar[++e].ToString(); posChar[2] = nivelChar[++e].ToString(); colorChar[0] = nivelChar[e += 2].ToString(); colorChar[1] = nivelChar[++e].ToString(); colorChar[2] = nivelChar[++e].ToString(); pos = int.Parse(posChar[0].ToString() + posChar[1].ToString() + posChar[2].ToString()); color = int.Parse(colorChar[0].ToString() + colorChar[1].ToString() + colorChar[2].ToString()); e += 2; //si no es 0 quiere decir q hay un bloque en la posicion if (color != 0) { Vector3 posBloque = new Vector3(vPosBloques[pos].x, vPosBloques[pos].y, 0); Renderer rend = objBloque.GetComponent <Renderer>(); switch (color) { case 1: rend.sharedMaterial = rojo; break; case 2: rend.sharedMaterial = verde; break; case 3: rend.sharedMaterial = azul; break; case 4: rend.sharedMaterial = amarillo; break; case 5: rend.sharedMaterial = naranja; break; case 6: rend.sharedMaterial = marron; break; case 7: rend.sharedMaterial = verdeOscuro; break; case 8: rend.sharedMaterial = celeste; break; case 9: rend.sharedMaterial = rosa; break; case 10: rend.sharedMaterial = violeta; break; case 11: rend.sharedMaterial = blanco; break; case 12: rend.sharedMaterial = gris; break; case 13: rend.sharedMaterial = negro; break; } objBloque.name = pos.ToString(); Instantiate(objBloque, posBloque, Quaternion.identity); //CREO EL BLOQUE Renderer bloqueDeJuego = GameObject.Find(pos + "(Clone)").GetComponent <Renderer>(); //BUSCO EL BLOQUE CREADO PARA bloqueDeJuego.gameObject.AddComponent <posYcolor>(); //AGREGARLE EL COMPONENTE posYcolor posYcolor scriptPosYcolor = GameObject.Find(pos + "(Clone)").GetComponent <posYcolor>(); //LO BUSCO Y ASIGNO LOS VALORES scriptPosYcolor.pos = pos; scriptPosYcolor.color = color; cargarCapsulas(objBloque.name); //CARGO LAS CAPSULAS DEL NIVEL cargarParticulas(objBloque.name, scriptPosYcolor); if (color != 13) { contadorBloques++; //SI EL COLOR ES DISTINTO DE NEGRO LO CUENTA COMO BLOQUE } } } stream.Close(); GM scriptGM = GameObject.Find("GM").GetComponent <GM>(); scriptGM.bloques = contadorBloques; }