// Al dejar de interactuar se cambia el estado a MidAir (para que pueda saltar una vez y no caer sin control) // se desactiva la animacion de Climbing y se vuelve a poner el rigidbody como antes. public override void DeInteract(PlayerInteraction pi, PlayerMovement pm) { pm.rBody.isKinematic = false; pi.anim.SetBool("isClimbing", false); pm.SetColliderStatus(true); pm.SwapState(MidAirState.GetInstance()); pi.objectToInteract = null; pi.SetWeaponActive(true); pi.interactingScript = null; }
public void StateDependentUpdate(PlayerMovement pm) { jumpStrength = pm.jumpStrength; if (wantsToJump) { //rBody.AddRelativeForce(Vector2.up * jumpStrength, ForceMode2D.Force); pm.rBody.velocity = Vector2.up * jumpStrength; wantsToJump = false; pm.anim.SetBool("isJumping", true); pm.SwapState(MidAirState.GetInstance()); } pm.CheckHorizontalMovement(); }
void ExitNonInteracting(Collider2D other) { // Si sale de un collider de tag Water mientras no interactua cambiamos el estado a midAir para que // pueda saltar y salir del agua. if (IsTagged("Water", other)) { movementScript.SwapState(MidAirState.GetInstance()); } // Si no estamos interactuando y salimos de un collider Rope (soga), seteamos en null el objeto // interactuable del interaction script, para que no pueda interactuar si no esta sobre la soga. else if (IsTagged("Rope", other) || IsTagged("TeleportInteracter", other)) { interactionScript.objectToInteract = null; feedbackScript.ResetImage(); } }