/* * Metodo que se llama una vez cada frame para * cada collider que esta en contacto con el trigger * * * * */ private void OnTriggerStay(Collider other) { //Inicializamos _soltando = false; //Si el collider con el que choca es una linea if (other.name.Contains("Linea")) { /* * Obtengo el TextMesh del objeto que colisiono * a traves de una pequeña consulta Linq * */ TextMesh linea = FindObjectsOfType <TextMesh>().First(a => a.name == other.name); //Obtengo el objeto que creara la linea ManejadorLinea manejadorLinea = linea.GetComponent <ManejadorLinea>(); /* * Si suelta el clic * */ if (Input.GetMouseButtonUp(0)) //Si suelta el clic { //Caso 1:Si la linea(Ui en escena) contiene _ (significa que no hay palabra puesta = (vacio)) if (manejadorLinea.LineaDisponible()) { //Encontrar la posicion de la 1ra _ (vacio) int posicion = manejadorLinea.FindFirst_(); //Agrego la palabra a la linea donde esten las __ manejadorLinea.PutText(gameObject.GetComponent <TextMesh>(), posicion); //Agrego la palabra a la linea donde esten las __ manejadorLinea.Remove_(); } //Caso 2 Si la linea tiene palabras que ya han sido puestas else if (manejadorLinea.ContienePalabraDeResp()) { //Si la linea tiene color rojo es q tiene palabras puestas /* * Obtengo la palabra antigua(donde quiero poner la nueva) * y coloco la palabra nueva * La palabra antigua la devuelvo junto a las otras palabras * por colocar * * */ string oldword = manejadorLinea.FindandReplaceRedWord(gameObject.GetComponent <TextMesh>().text); //Devolvemos la palabra a su sitio BajarPalabra(oldword); } _soltando = true; } } }
private void Help() { Poema poemaActual = _controladorPoema._poemas[_controladorPoema.nivelPoema]; Debug.Log("Entre a Help"); /* * * Obtengo una lista TextMesh de los elementos vacio * "_" donde se deben de poner las palabras * en el poema con una consulta Linq para obtener las lineas y ordenarlas * segun el orden en pantalla * */ List <TextMesh> lineas = FindObjectsOfType <TextMesh>().Where(a => a.name.Contains("Linea")).OrderBy(a => a.name).ToList(); int cont = 0; //Para saber en que linea estoy foreach (var l in lineas) { ManejadorLinea m = l.GetComponent <ManejadorLinea>(); Debug.Log("var l in lineas"); if (m.LineaDisponible() || m.GetPalabraInsegura()) { Debug.Log("Entro IF () ()"); //Recorro la lista de palabras del poema donde estoy foreach (var p in poemaActual.palabrasP) { Debug.Log("var p in poemaActual.palabrasP)"); //Si la popsicion de la palabra es de la linea donde estoy if (p.posicion == cont) { Debug.Log("Entro IF"); ControladorPalabra cp; GameObject o; //Si hay una palabra puesta la cambio o la marco como correcta if (m.GetActualPuesta() != "") { //Aguardar la que esta puesta antes de cambiarla o = FindObjectsOfType <TextMesh>().First(a => a.text == m.GetActualPuesta()).gameObject; Debug.Log(o.GetComponent <TextMesh>().text); //Cambia la palabra y marco la correcta m.FindandReplaceRedWord(p.palabra); m.SetCorrectWord("#008000ff"); //Quitar la palara correcta de la lista y bajar la que habia GameObject correcta = FindObjectsOfType <TextMesh>().First(a => a.text == p.palabra).gameObject; cp = o.GetComponent <ControladorPalabra>(); //Colocamos las palabra a sus posiciones cp.SubirPalabra(correcta); cp.BajarPalabra(o.GetComponent <TextMesh>().text); //Bajando la que estaba puesta } else //Si no hay la pongo { Debug.Log("Entro ELSE"); //m.PutText(p.palabra,m.FindFirst_()); m.Remove_(); m.SetCorrectWord("#008000ff"); //Desactivando la palabra para que no la pueda seleccionar mas o = FindObjectsOfType <TextMesh>().First(a => a.text == p.palabra).gameObject; cp = o.GetComponent <ControladorPalabra>(); cp.SubirPalabra(o); } Debug.Log("Decremento Ayuda"); numAyuda--; UpdateTextMesh(ayudaT, numAyuda.ToString()); DecDiamantes(); break; } } break; } cont++; } }