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 /
  • Help Room /
avatar image
0
Question by Recoximani44 · Dec 14, 2019 at 11:43 PM · input.getbutton

Input in Void Update not working,Input not always registering in void update

I have an input in void update which starts an action in fixed update. the input doesn't always register. Please help.

void Update() { moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical")).normalized; if (Input.GetButtonDown("Jump")) { jumpRequest = true; } else { jumpRequest = false; } } void FixedUpdate() { if (jumpRequest) { rb.AddRelativeForce(Vector3.up * jumpVelocity, ForceMode.Impulse); } }

,I have an input in void update that starts an event in fixed update. the input doesn't always register (as if the input was in fixed update). Can someone please help.` void Update() {

     if (Input.GetButtonDown("Jump"))
     {
         jumpRequest = true;
     }
     else
     {
         jumpRequest = false;
     }
 }

 void FixedUpdate()
 {
     if (jumpRequest)
     {
         rb.AddRelativeForce(Vector3.up * jumpVelocity, ForceMode.Impulse);
     }
 }`
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

1 Reply

· Add your reply
  • Sort: 
avatar image
1

Answer by Bunny83 · Dec 14, 2019 at 11:56 PM

Once more a case where people do not understand the point of FixedUpdate. You only need it for applying continuous forces over time. There is no problem applying an impulse force in Update

So you can simply do this in Update:

 if (Input.GetButtonDown("Jump"))
 {
     rb.AddRelativeForce(Vector3.up * jumpVelocity, ForceMode.Impulse);
 }

FixedUpdate does not necessarily run every frame. Especially if your actual framerate is high. Let's just assume a visual framerate of 100 fps. In this case FixedUpdate would only run once every two visual frames. That means when you detect the button down even in Update and just set the boolean to true, it will only be true for that one frame since you set it back to false the next frame. If that happens on a frame where fixedupdate doesn't run at all it would completely miss that event. Your boolean would work if you do not reset the boolean in Update but actually inside FixedUpdate. This works but is unnecessarily complicated:

 void Update()
 {
     if (Input.GetButtonDown("Jump"))
     {
         jumpRequest = true;
     }
 }
 void FixedUpdate()
 {
     if (jumpRequest)
     {
         rb.AddRelativeForce(Vector3.up * jumpVelocity, ForceMode.Impulse);
         jumpRequest = false;
     }
 }

This does work because the boolean stays true until at least one FixedUpdate has run and has "consumed" your event. If you have trouble understanding How FixedUpdate works, I made this animation years ago. If you want to understand it from a code point of view, you can look at my CustomFixedUpdate class which does the same thing that Unity does for the built in FixedUpdate callback. Since Unity has provided us with the Physics.Simulate method they even put an example in the docs how the FixedUpdate works

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

190 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 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

bluetooth AR gun with android 0 Answers

Input.GetMouseButtonDown(0) causing infinite loop in corotine? 0 Answers

Why isn't my basic input script working? 0 Answers

Scale object when player is within a given distance of it 1 Answer

Input key is taken into account several times 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