Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 Firox_ · Mar 07, 2020 at 02:44 PM · inputpropertiesfunction call

Problem with GetButtonDown

I have an issue with Input.GetButtonDown. I used it to detect if player press jump button. The is stored in a property and is given to a move function.

Here's the code relative to movement in the mother class:

 protected float xInput = 0f;
 protected bool jump = false;
 
 protected int jumpButId = 0;
 protected int funcJumpId = 0;
 protected int funcId = 0;
 // Start is called before the first frame update
     protected void Awake()
     {
         rd = GetComponent<Rigidbody2D>();
         groundMask = LayerMask.GetMask("Ground");
     }
 
     protected void Move(float x, bool jump)
     {
         //print($"Func jump call nb {funcJumpId}. Jump state in func: {jump}. Jump state in obj: {this.jump}");
         funcJumpId++;
         Vector3 targetVelocity = new Vector3(x, rd.velocity.y);
         rd.velocity = Vector3.SmoothDamp(rd.velocity, targetVelocity, ref curVelocity, movementSmoothing);
 
         if (jump)
         {
             print($"Func jump call nb {funcJumpId}");
             funcJumpId++;
             if (onGround)
             {
                 rd.AddForce(new Vector2(0, jumpForce));
                 onGround = false;
             }
             else if (airJump)
                 rd.AddForce(new Vector2(0, jumpForce));
         }
     }

Here's the code of the child class (attached to player):

 // Update is called once per frame
     private void Update()
     {
         xInput = Input.GetAxisRaw("Horizontal") * moveSpeed;
         jump = Input.GetButtonDown("Jump");
         if (Input.GetButtonDown("Jump"))
         {
             //print($"Jump nb {jumpButId}");
             jumpButId++;
         }
     }
 
     void FixedUpdate()
     {
         if (!onGround)
             CheckGround();
         
         if (xInput != 0)
         {
             xInput *= Time.fixedDeltaTime;
             Move(Mathf.Abs(xInput) / xInput, jump);
         }
         else
             Move(0, jump);
     }

The problem is that sometimes the condition in Move() is not executed even if I pressed the jump button. So jump = false even if it should not. I don't find why it does that and how I can solve the problem.

Edit for those who have a similar problem: it seems that I had 2 Update call between 2 FixedUpdate call so the jump bool was reset to false before the call of the Move function. So the fix was to only update jump value to true if it's value was false, and then reset it to false later in the Move func.

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

0 Replies

· Add your reply
  • Sort: 

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

147 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Help In Making a SphereCast for 3D Tire! Working RayCast Script included! 0 Answers

Right gamepad stick not working with Input System? 1 Answer

Input Help! 1 Answer

OpenXR Continuous Turn and Movement not working 0 Answers

IOS object touch, collider 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