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 DevCas1 · May 13, 2016 at 07:11 PM · decreasegradually

Setting a value to 0 in a short time instead of instantly

Hi,

I'm trying to make some sort of 1'st person Flying simulator. I have the controls working (kinda), but when the player releases the control stick on the controller, the ship stops rotating immediately. How do I let it quickly slow down the rotation instead of instantly setting it to 0?

Code:

         // Controller controlls
     if (useController)
     {
         if (Input.GetKey(KeyCode.Joystick1Button0))
         {
             rb.velocity = transform.forward*thrustForce*Time.deltaTime;
         }

         horizontalRotation += Input.GetAxis("Horizontal") * horizontalSensetivity * Time.deltaTime;
         verticalRotation += Input.GetAxis("Vertical") * verticalSensetivity * Time.deltaTime;
         strafeRotation += Input.GetAxis("controllerBumpers") * strafeSensetivity * Time.deltaTime;

         if (Input.GetAxis("Horizontal") == 0)
         {
             horizontalRotation = 0;
         }

         if (Input.GetAxis("Vertical") == 0)
         {
             verticalRotation = 0;
         }

         if (Input.GetAxis("controllerBumpers") == 0)
         {
             strafeRotation = 0;
         }
     }
     
     Debug.Log(shipRotation);
     
    transform.Rotate(shipRotation);
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
0

Answer by FortisVenaliter · May 13, 2016 at 08:29 PM

Check out the settings for that axis in the Edit->Project Settings->Input window. You can adjust the gravity variable, which determines how quickly it resets to zero.

Alternately, you can try some form of interpolation.

Comment
Add comment · Show 2 · 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 DevCas1 · May 17, 2016 at 06:46 AM 0
Share

Problem is: I'm looking to do this with a controller. As such, gravity won't work... I do have found some sort of problem. Ins$$anonymous$$d of using

strafeRotation += Input.GetAxis("controllerBumpers") strafeSensetivity Time.deltaTime; for example, I could use strafeRotation = Input.GetAxis("controllerBumpers") strafeSensetivity Time.deltaTime;

But the problem with this is the rate at which the ship rotates now. It nearly doesn't. For this, I could add A LOT of sensitivity in code, but then the numbers would get really high. And for some reason, I try to keep the numbers a bit low.

I will try, however, with the high numbers. But if a better way is possible, I'd like to know.

But as with this, the ship will rotate as far as you push the stick. So if you release the stick, the ship will instantly stop rotating. How can I fix this? Will see if some form of interpolation could help.

avatar image FortisVenaliter DevCas1 · May 18, 2016 at 08:35 PM 0
Share

Right, so you need to simulate an axis. Store a float, and interpolate it each frame with the actual axis value. That way it will float a little bit more than the stick alone.

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

How do you create decreasing health over time? 3 Answers

I want to use one int in tow scripts and decrease it in the second one ,I want to use an int in tow scripts and I want to add to it 0 Answers

Thermometer-like object 0 Answers

Decreasing Light Source 0 Answers

Tool Durability if Hit any 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