- Home /
How to make my double jump require 2 separate button presses?
Hello! I'm currently going through the tutorials and I've made my own double jump as I tinker around on my own. The problem is, since Update() is checking every single frame to see if the player is pressing jump, what ends up happening is the following:
Frame 1: The player is holding jump, AddForce(); Frame 2: The player is still holding jump, AddForce();
I end up effectively with a jump that jumps twice as high as it should unless the player taps the jump button for exactly 1 frame. Below is my code. I notice that the Input API has "GetKeyDown" which sounds like it would help my problem, but I want to utilize the InputManager/GetAxis so I can have customizable controls for my hypothetical future game. Below is my code:
void Update(){
float jumping = Input.GetAxis("Jump");
if (grounded && jumping > 0 && jumpCount == 0) { //THE JUMP
GetComponent<Rigidbody2D> ().AddForce (new Vector2 (0, jumpForce));
anim.SetBool ("Ground", false);
jumpCount++;
Debug.Log ("Wee!" + jumpCount);
} else if (jumpCount < 2 && jumping > 0) {
GetComponent<Rigidbody2D> ().AddForce (new Vector2 (0, jumpForce));
Debug.Log ("Double Jump!");
jumpCount++;
}
Thank you very much for your time!
Answer by PT34 · Jul 21, 2016 at 06:24 PM
Use this:
Input.GetButtonDown ("Jump");
So it will jump only when button is pressed down.
And with GetButton and it's derivative you can still customize the button in the Input $$anonymous$$anager.
Thanks, this worked fantastically. I didn't realize you could use GetButtonDown with Input Axes!
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
How to Detect if a Button is Not Being Pressed 0 Answers
Trouble detecting button release with Input.GetButtonUp() 1 Answer
Animation not working 1 Answer