//Coge el estado del gancho y llama a soltar el quimico void Update() { if (estadoAct != null) { estadoGancho = estadoAct.daEstado(); SoltarQuimico(); } }
private void Update() { //Animaciones shooting = gancho.GetShooting(); anim.SetFloat("Speed", Mathf.Abs(rb.velocity.x)); anim.SetBool("Grounded", landed); anim.SetBool("IsHurting", hurtanim); anim.SetBool("IsDead", deadanim); anim.SetBool("Jump", jump); anim.SetInteger("Shooting", shooting); //Nos aseguramos de que sea dinámico if (!enganchado && mov) { //Leo entrada de teclado para moverme en el ejeX moveX = Input.GetAxis("Horizontal"); //Salto si estoy en el suelo, landed lo comprueba jump = Input.GetButtonDown("Jump"); landed = Mathf.Abs(rb.velocity.y) < 0.01f; if (jump && landed) { puedeSaltar = true; } //esta serie de else if es para determinar la direccion donde mira el personaje //(para saber donde disparar el gancho) if (Input.GetAxisRaw("Horizontal") == 1) //Mira dcha. { //dirGancho = Vector2.right; dirGancho = Vector2.right; //esta condicion es necesaria porque sino mientras el gancho esta en ida/vuelta y el jugador rota, el gancho tambien if (gancho.daEstado() == HookState.Quieto) { //cambia la rotacion en el eje Y del player cuando se mueve a la izquierda transform.rotation = new Quaternion(transform.rotation.x, 0, transform.rotation.z, 0); } rb.constraints = RigidbodyConstraints2D.FreezeRotation; } else if (Input.GetAxisRaw("Horizontal") == -1) //Mira izq { dirGancho = Vector2.right; //esta condicion es necesaria porque sino mientras el gancho esta en ida/vuelta y el jugador rota, el gancho tambien if (gancho.daEstado() == HookState.Quieto) { //pone la rotacion en el eje Y del jugador a 0 si se mueve a la derecha transform.rotation = new Quaternion(transform.rotation.x, -180, transform.rotation.z, 0); } rb.constraints = RigidbodyConstraints2D.FreezeRotation; SoundManager.instance.RunSFX(); } else if (Input.GetAxisRaw("Vertical") == -1) //Mira abajo { dirGancho = Vector2.down; } else if (Input.GetAxisRaw("Vertical") == 1) //Mira arriba { dirGancho = Vector2.up; } } //Se encarga de mover al jugador cuando está enganchado else if (enganchado) { float step = velocidadEnganchado * Time.deltaTime; posGancho = gancho.GetComponent <Transform>().position; if (transform.position.x < posGancho.x) { posGancho -= posGanchoInicio; } else { posGancho += posGanchoInicio; } transform.position = Vector2.MoveTowards(transform.position, gancho.transform.GetChild(0).position, step); if (Vector2.Distance(transform.position, gancho.transform.position) < 0.8f) { CambiaEstado(false); rb.isKinematic = false; } } }