void FixedUpdate() { if (climber.Climbing) { if (dir.x > 0.1f) { climber.ClimbDown(ClimbSpeed); } if (dir.x < -0.1f) { climber.ClimbUp(ClimbSpeed); } } else { if (Mathf.Abs(dir.x) > 0.1f && HasRoom(dir.x)) { rb.velocity = new Vector2(dir.x * MoveSpeed, rb.velocity.y); } else { rb.velocity = new Vector2(0, rb.velocity.y); } } if (dir.y > 0.1f) { climber.ClimbUp(ClimbSpeed); } if (dir.y < -0.1f) { climber.ClimbDown(ClimbSpeed); } if (climber.Climbing && dir.magnitude < 0.1f) { rb.velocity = Vector2.zero; } if (jump) { if (climber.Climbing || IsGrounded()) { rb.velocity = new Vector2(rb.velocity.x, 0); rb.AddForce(new Vector2(0, JumpSpeed)); climber.Release(); jump = false; } } }
void FixedUpdate() { if (config.ClimbDownStairs) { if (climber != null) { if (climber.ClimbDown(config.ClimbingSpeed)) { shouldMove = false; //transform.eulerAngles = new Vector2(0f, -180f); } else { shouldMove = true; } } else { Debug.Log("<color=red>No climber on " + gameObject.name + "!</color>"); } } if (shouldMove && grounded && !stopped) { rb2D.velocity = new Vector2(velocityX, rb2D.velocity.y); } }