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 indolence · Nov 19, 2018 at 01:21 AM · physics2daddforcedragacceleration

Is it possible to have slow acceleration and high drag at the same time?

I'm working on a 2D sideview airplane game in the vein of Sopwith / Biplanes / Altitude, and I'm running into problems getting the movement right. Trying to achieve something similar to what you see in this video: https://www.youtube.com/watch?v=pUb2XsBl3Is

This should basically work as follows:

- As long as you're flying, you can rotate without any fishtailing (the plane always goes in the direction it's pointing and doesn't have momentum)

- Flying upwards slows you down, flying downwards speeds you up

- Once horizontal, you'll slowly return to your standard "default speed" if you gained/lost a lot of speed from ascending or descending.

- If your forward velocity drops too low, you stall. Once you stall, you start falling and need to point INTO the stall to recover.

I'm currently trying to use the physics system to get this feeling right, and I'm running into problems. Basically, if I want the steering to feel right, I have to put Drag very high. Unfortunately, this means that acceleration/deceleration is almost instant. If I put Drag low, I can get more of a feeling of keeping forward speed, but suddenly I feel like I'm sliding on ice (or playing Asteroids).

Here's the main movement code. Note that "acceleration" is actually just the force... the name is a bit misleading from earlier iterations working differently, and I haven't updatedit yet. Let me know if anything is unclear or if I can provide more information.

         // Rotate based on player input
         transform.Rotate(0, 0, inputX * turnSpeed);
 
         // Get current forward speed for next round of calculations
         forwardSpeed = transform.InverseTransformDirection(rb.velocity).x;
 
         // STALL CODE
         // If forward speed too low, stall
         if (forwardSpeed < stallThreshold)
         {
             stalled = true;
             stallText.SetActive(true);
             rb.drag = 0f;
             currentAccel = 0f;
         }
         else stalled = false;
 
 
 
 
         // FLYING CODE
         // If not stalled, start flying
         if (!stalled)
         {
             // Turn off stall text
             stallText.SetActive(false);

 
             // Ramp to normal acceleration and drag
             if (currentAccel < acceleration)
             {
                 currentAccel += accelRampUp;
                 rb.drag += dragRampUp;
             }
             else
             {
                 currentAccel = acceleration;
                 rb.drag = flyingDrag;
             }
 
 
 
             // Braking code 
             if (braking)  // If the player is holding the brake button, start increasing the total brake power each tick
             {
                 brakeAmount += brakePower*0.0001f;  // Multiplier just makes the tunable value in the editor more readable
             }
             else brakeAmount = 0;
     
             // Assign result of thrust + angle + braking to determine move amount
             GetAngleSpeedModifier();
 
             // Add force based on acceleration
             rb.AddForce(transform.right * 
                 (currentAccel 
                 + GetAngleSpeedModifier()  // Modify accel by 
                 - brakeAmount));







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

97 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

Related Questions

Acceleration with drag 1 Answer

How to increase the acceleration of a falling object? 1 Answer

Drag and release mouse to Add forc to object's X and Y axis' only? 2 Answers

Circular movement using AddForce() 1 Answer

how should i move a vehicle correctly in unity,what kind of rigidbody physics should i add to move a vehicle ?? 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