How to block one input while another is in use?
More specifically, what is a good way to completely bock the ability to "jump" while crouching? (i.e. If the player hits the "jump" button while crouching, nothing happens until the "crouch" button is released.) Or to put it another way, how can I block player inputs from stacking up or overriding each other?
I know it can't be all that complicated and I've tried a few ideas I've come up with, but I can't see to get it. Still pretty new at this.
Here is the section of my character controller code that makes the player jump and crouch:
if (Input.GetButtonDown("Jump"))
{
jump = true;
animator.SetBool("IsJumping", true);
}
if (Input.GetButtonDown("Crouch"))
{
crouch = true;
} else if (Input.GetButtonUp ("Crouch"))
{
crouch = false;
}
I'm attempting to follow one of Brackey's YouTube tutorials on 2D movement and animation, both of which I'll link below for reference if needed. The code I'm using pretty much matches up with his.
Also, for clarity, after some deep digging in the comments I think I've worked out the minor flaws in his Character Controller script that his comment section pointed out. Such as the "!crouch" vs "crouch" error on line 67 of the Character controller script. I have Managed to get everything performing well enough to the point I can make the code suit my project's my needs. (I hope, lol)
I appreciate you taking the time to read this; along with any comments trying to help me figure this out. It means the world to me!
Brackeys Movement: https://www.youtube.com/watch?v=dwcT-Dch0bA&t=1s Brackeys Animation: https://www.youtube.com/watch?v=hkaysu1Z-N8
Answer by Mazer83 · Sep 10, 2020 at 01:45 AM
This should suffice:
if (!crouch && Input.GetButtonDown("Jump"))
{
jump = true;
animator.SetBool("IsJumping", true);
}
Your answer
Follow this Question
Related Questions
Cant jump while sprinting (RigidBody Movement) 0 Answers
Character Animator controller/movement 0 Answers
Timer wont work 0 Answers
Getting weird error message!?!?!? 1 Answer