Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Rodney26 · Jun 11, 2015 at 01:31 AM · updatejumpfixedupdate

counter doesnt work in update

I have a simple code that makes my character jump,

My character can jump as long as he's current jump is lower than the maxNumber of jumps.

and every time he jumps i add 1 to his current jump.

my problem is the jump counter doesnt always add one? even when the character jumps, he jumps with no problems but the counter doesnt always respond.

he is allowed to jump twice, but from time to time the player does hes first jump without anything being added to his current jump.

 // Jumping
 public int maxNoJumps = 2;
 public int currentJumpNo = 0;
 public bool canPlayerJump = false;
 public float JumpVelocity = 25;

 void Update () 
 {

grounded = Physics2D.Linecast (transform.position, groundCheck.position, 1 << LayerMask.NameToLayer ("Ground"));

      if (grounded)
      {
       currentJumpNo = 0;
      }

     // SETTING IF PLAYER IS ABLE TO JUMP
     if (currentJumpNo < maxNoJumps) 
     {
         canPlayerJump = true;
     } else 
     {
         canPlayerJump = false;
     }


     // IF PLAYER PRESSES SPACE AND IS ABLE TO JUMP
     if (Input.GetKeyDown (KeyCode.Space) && canPlayerJump) 
     {
         currentJumpNo+=1;
         rb2d.velocity = new Vector2 (rb2d.velocity.x, JumpVelocity);

     }



like i said the player jumps even when the counter doesnt go up allowing him sometimes to jump 3 times.

also i have tried it in fixed update and it's still the same and incrementing in different ways.

thank in advance for helping

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by WCA · Jun 11, 2015 at 09:07 AM

Hi rodney. Your problem is that he can jump 3 times but your maxNoJumps = 2 right?

My guess is because of the raycast. When you first jump, your jump counter is still 0 because the raycast is still hitting the ground. it begins incrementing after it stops hitting it. Try to draw your raycast and check.

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Rodney26 · Jul 23, 2015 at 06:54 PM 0
Share

Sorry it's been a while but yes this was the problem, I simply moved the ground check up closer to the player and then created a time check function to check like 0.2 seconds after the player jumps to make sure he was on the right current jump number. $$anonymous$$any thanks for answering though

avatar image
0

Answer by Ricewind1 · Jun 11, 2015 at 04:49 AM

My guess is that 'grounded' keeps becoming true, thus the counter is rest to 0 every time. Either use the game's own .isGrounded function or

function IsGrounded(): boolean { return Physics.Raycast(transform.position, -Vector3.up, distToGround + 0.1); }

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

Problem with animation and void fixedupdate() 1 Answer

2D physics jump issue. 1 Answer

Proper item carry by player respecting physics (collisions) 2 Answers

Not registering input when checking input in Update and using input in FixedUpdate 1 Answer

FixedUpdate limits: consistant 0.01 s on mobile devices? 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges