- Home /
How can I stop my player from jumping after double jumps? My player consistently jumping.
public float jumpSpeed = 10f; public float jumpForce = 50f; int jumpCount = 1; public bool isGrounded; bool grounded = false; Rigidbody rb;
 bool canDoubleJump;
 // Use this for initialization
 void Start () {
     rb = GetComponent<Rigidbody>();
 }
 
 // Update is called once per frame
 void Update () {
     if (Input.GetKeyDown (KeyCode.Space) && isGrounded && jumpCount< 2)
     {
         jumpForce = 360f;
         rb.AddRelativeForce (new Vector3(0, jumpForce));
         canDoubleJump = true;
     }
     else
     {
         if (canDoubleJump == true && Input.GetKeyDown(KeyCode.Space))
         {
             jumpForce = 300f;
             rb.AddRelativeForce (new Vector3(0, jumpForce));
             canDoubleJump = false;
         }
     }
 }
 void EnableDoubleJump()
 {
     canDoubleJump = true;
 }
}
Where is isGrounded being set? How are you incrementing jumpCount?
isGrounded is set in public class public bool isGrounded;
public float jumpSpeed = 10f; public float jumpForce = 50f; int jumpCount = 1; public bool isGrounded; bool grounded = false; Rigidbody rb;
Right, but what I mean is, what is setting them to true or false after you jump. What is increasing the jumpCount after you jump?
Answer by GamitusLabs · Nov 28, 2018 at 09:42 PM
Here's the logic I would use (pseudo-code)
 Update()
 {
     if(curJumps < maxJumps && !applyJump)        // allows for single/double/multi-jump
     {    
         if(KeyDown(Jump))
         {
             switch(curJumps)
             {
                 case 0:
                     if(grounded)
                     {
                         jumpForce = InitialJumpForce;
                         applyJump = true;
                         curJumps++;
                         break;
                     }
                 case 1:
                     jumpForce = AirbornJumpForce;
                     applyJump = true;
                     curJumps = 2;
                     break;
                 case 2:
                     // additional air-jumps hereafter
                 default:
                     // catchall
             }
         }
     }
 }
 
 FixedUpdate()
 {
     if(applyJump)
     {
         rb.AddForce(Up * jumpForce, Impulse);
         applyJump = false;
     }
 }
 
 OnCollisionEnter()
 {
     if(collider == ground)
     {
         curJumps = 0;
         grounded = true;
     }
 }
 
 OnCollisionExit()
 {
     if(collider == ground)
     {
         grounded = false;    
     }
 }
Answer by mayur7garg · Nov 28, 2018 at 06:30 PM
Make sure that isGrounded bool is set to false once the player is in the air. And I haven't got what is the use of jumpCount here. 
jumpCount is used to calculate the number of jumps the player has to do, but I don't think it a good use.
Your answer
 
 
             Follow this Question
Related Questions
Please Help me fix my code (jumping animation playing once) 0 Answers
Triple jumping instead of double 2 Answers
Double Jump Not working 2 Answers
2D double jump doesn't work. 2 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                