/* * Metodo que comprueba si la respuesta seleccionada * a traves del boton es la correcta correspontiene al nivel * actual * x: Boton que contiene la respuesta seleccionada * * */ public void Comprobar(Button x) { //Si estamos en un nivel permitido y no esta activo el panel de avisos if (_adivinanzaNivel <= _adivinanza.ContAdivinanzas() && !_modalPanel.IsActivo()) { //Compruebo si acierta(el contenido del boton es igual a la respusta del nivel actual if (x.GetComponentInChildren <Text>().text == _respuestactual) { //Actualizamos variables diamantes++; aciertos++; UpdateTextMesh(diamantesTextMesh, diamantes.ToString()); UpdateTextMesh(AciertosTextMesh, aciertos.ToString()); /* * Aviso del acierto y pido * ok para poder pasar al siguiente nivel */ /* _modalPanel.Elejir("Has acertado!. +1.Diamante. Ganaste a la Chispa.Pasar siguiente nivel", * SiguientePantalla, aceptarButton, cancelarButton, true); */ /* * * Aviso que se ha acertado * */ _modalPanel.AvisoAcierto("Has acertado!. +1.Diamante. Ganaste a la Chispa.Pasar siguiente nivel" , SiguientePantalla, aceptarButton, cancelarButton, helpButton); } else { //Actualizamos variables fallos++; diamantes--; UpdateTextMesh(FallosTextMesh, fallos.ToString()); UpdateTextMesh(diamantesTextMesh, diamantes.ToString()); /* * Aviso del acierto y pido * ok para poder pasar al siguiente nivel */ /*_modalPanel.Elejir("Has Fallado!. -1.Diamante.Gana la Chispa. Pasar siguiente nivel", * SiguientePantalla, aceptarButton, cancelarButton, true); * */ /* * * Aviso que se ha acertado * */ _modalPanel.AvisoAcierto("Has Fallado!. -1.Diamante.Gana la Chispa. Pasar siguiente nivel", SiguientePantalla, aceptarButton, cancelarButton, helpButton); } } }
/* * Update para detectar lo que esta pasando * cada fotograma en el minijuego */ void Update() { //Si hay click y el panel no esta activo if (Input.GetMouseButton(0) && !_modalPanel.IsActivo()) { /* * Un Ray es un rayo imaginario que lanzo desde la camara hacia la * profundidad y si impacta en un cuadro entonces actuo */ Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //Para detectar donde impacta el rayo(para saber donde ir) RaycastHit hit = new RaycastHit(); //Si detactamos que el rayo impacta if (Physics.Raycast(ray, out hit)) { //Obtengo el objeto donde impacto el ray por el nombre del collider del hit GameObject o = GameObject.Find(hit.collider.name); /* * Si el nombre contine ! sabemos que es un cuadro inferior * (posibles respuestas) */ if (o.name.Contains("!")) { //Textmesh de la letra (cuadros posible respuesta) TextMesh tletras = o.GetComponentInChildren <TextMesh>(); //Obtengo los cuadros de la respuesta para saber cual no tiene letra puesta var resp = GetRespObjs(); /* * Recorro cada cuadro de la respuesta para comprobar * si estan llenos. Si alguno esta en blanco asigno la letra * correspondiente y espero al sigiente * click para volver a comprobar */ foreach (var cuadro in resp)//Por cada cuadro en la respuesta { //Obtengo el TextMesh del cuadro de la respuesta var tresp = cuadro.GetComponentInChildren <TextMesh>(); if (tresp.text == "")//Si esta en blanco { //Asigno la letra(posible respuesta)al cuadro que clickeo(respuesta) tresp.text = tletras.text; /* * Cambio posicion del cuadro que clickeo (letra posible respuesta) aumentado * el eje y para que desaparezca, ya que ha sido puesta en la solucion */ o.transform.position = new Vector3(o.transform.position.x, o.transform.position.y + 20f, o.transform.position.z); /* * Para que no se vea en la escena, guardo el objeto(el que acabo de poner) * para tener constancia que existe y saber que esta en la nuevo eje y */ EstadopLetras.Add(o); /* * Obtengo la respuesta al nivel actual * Compruebo el estado de la respuesta y hagos * los respectivos cambios * Y salgo hasta el siguiente click */ var actual = GetActual(GetRespObjs()); CheckandSet(actual, arregloactual[0].ToString()); break; } } } //Si el rayo impacta en un cuadro de los de la respuesta /* * Si el nombre contine * sabemos que es un cuadro superior * (en la respuesta) */ if (o.name.Contains("*")) { //Obtengo el texto actual que esta puesto en la respuesta var rLetras = o.GetComponentInChildren <TextMesh>(); //Es6tado de las letras que estan arriba o sea las que estan asignadas /* * Recupero las letras de la posible respuesta * que ha sido asignadas en la respuesta(cuadros superiores) * y se han guardado su estado */ var letrasAsig = GetLetras(); /* * Recorro las letras que han sido asignadas */ foreach (var letraA in letrasAsig) { /* * Obtengo el TextMesh de la letra que toque * segun el recorrido. Si hay una letra que no es igual * a la letra que clickea (cuadro respuesta) * Compruebo la siguiente. Hasta encontrar una igual */ var tresp = letraA.GetComponentInChildren <TextMesh>(); if (tresp.text != rLetras.text) { continue; } /* * Asigno la letra que esta en respuesta * al cuadrado inferior correspondiente * Y bajo la letra de la respuesta * a su posicion original y actualizo * en los componentes que afecta */ tresp.text = rLetras.text; ArribaAabajo(tresp.text); EstadopLetras.Remove(letraA); //Borro la letra del cuadro de respuesta rLetras.text = ""; break; } } } } }