// Update is called once per frame void Update() { //MOVIMIENTO HORIZONTAL //TOCO A if (Input.GetKeyDown(KeyCode.A) && !Input.GetKey(KeyCode.S) && !Input.GetKey(KeyCode.D)) { bool penalizado = true; if (!energia.estaCansado && !patron.patronValido(letrasPatron.A) && energia.sinEnergia(velocidadX / patron.factorVelocidad, penalizado)) { animador.SetBool("estaCansado", true); } } //TOCO S if (!energia.estaCansado && Input.GetKeyDown(KeyCode.S) && !Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.D)) { bool fueValido = patron.patronValido(letrasPatron.S); if (fueValido) { targetX = this.transform.position.x + distanciaX; movimientoHorizontal = true; } bool penalizado = true; if (!fueValido && energia.sinEnergia(velocidadX / patron.factorVelocidad, penalizado)) { animador.SetBool("estaCansado", true); } } //TOCO D if (!energia.estaCansado && Input.GetKeyDown(KeyCode.D) && !Input.GetKey(KeyCode.S) && !Input.GetKey(KeyCode.A)) { bool penalizado = true; if (patron.patronValido(letrasPatron.D)) { penalizado = false; } if (energia.sinEnergia(velocidadX / patron.factorVelocidad, penalizado)) { animador.SetBool("estaCansado", true); } } if (movimientoHorizontal) { animador.SetBool("estaCaminando", true); Vector3 targetVector = transform.position; float xAnterior = targetVector.x; targetVector.x = targetX; transform.position = Vector3.Lerp(transform.position, targetVector, velocidadX / patron.factorVelocidad); distancia.incrementarDistancia(Math.Abs(xAnterior - transform.position.x)); if (Mathf.Abs(transform.position.x - targetX) < 0.1f) { animador.SetBool("estaCaminando", false); movimientoHorizontal = false; } } if (!energia.estaCansado) { animador.SetBool("estaCansado", false); } ////////////////////////// //HABILITA MOVIMIENTO HACIA ARRIBA if (!energia.estaCansado && Input.GetKey(KeyCode.UpArrow) && !movimientoVertical && !(this.posVertical == posicionVertical.arriba)) { movimientoVertical = true; this.dirVertical = direccionMovimientoVertical.arriba; switch (posVertical) { case posicionVertical.abajo: posicionYFinal = targetymedio; break; case posicionVertical.medio: posicionYFinal = targetyarriba; break; } } //HABILITA MOVIMIENTO HACIA ABAJO if (!energia.estaCansado && Input.GetKey(KeyCode.DownArrow) && !movimientoVertical && !(this.posVertical == posicionVertical.abajo)) { movimientoVertical = true; this.dirVertical = direccionMovimientoVertical.abajo; switch (posVertical) { case posicionVertical.medio: posicionYFinal = targetyabajo; break; case posicionVertical.arriba: posicionYFinal = targetymedio; break; } } //REALIZA MOVIMIENTO VERTICAL if (movimientoVertical) { Vector3 targetVector = this.transform.position; targetVector.y = posicionYFinal; transform.position = Vector3.Lerp(transform.position, targetVector, velocidadY); if (Mathf.Abs(transform.position.y - posicionYFinal) < 0.1f) { movimientoVertical = false; switch (posVertical) { case posicionVertical.medio: if (dirVertical == direccionMovimientoVertical.abajo) { posVertical = posicionVertical.abajo; transform.position = new Vector3(transform.position.x, transform.position.y, -6); } else { posVertical = posicionVertical.arriba; transform.position = new Vector3(transform.position.x, transform.position.y, -2); } break; default: posVertical = posicionVertical.medio; transform.position = new Vector3(transform.position.x, transform.position.y, -4); break; } } } }