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 TribalInstincts · Dec 17, 2019 at 07:15 AM · 2dphysicsspacetorque

Applying torque to smoothly stop at a desired rotation - factoring Mass and a Max torque

Okay, I'm just going to plainly lay out what I am trying to do because I simply can't find the solution to this. Every attempt I have made has failed miserably in one way or another.


Situation:

  • 2D environment

  • No gravity

  • No drag

  • Variable mass

  • Variable Max possible torque


I need to be able to set a target direction, and have the torque managed in such a way that the object will always try to reach that direction without overshooting (Unless its existing velocity simply can't be overcome with its maximum torque)


If its not obvious, the object is a 2D spaceship and I'm trying to make the movement as physically based as possible to allow things like asteroids to knock into a spin that might take a few full rotations to decelerate from.

<- This is the point where I wish I could post some code thats almost there, but this is so far beyond my math/physics skill that I'm left with just asking for help.
I have looked at and implemented dozens of options I have seen across several forums/ask sites. Spent hours trying to modify them. None of them giving the results I need.


Edit: Just found https://youtu.be/ty9xm7U1ULA?t=42 which shows EXACTLY what I'm looking to do (the control and physics peace at least. It looks like the bottom left control gives the ship a forward vector and its doing its best to face that direction even after getting hit by something heavy)

Comment
Add comment · Show 2
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 lgarczyn · Dec 18, 2019 at 01:33 AM 0
Share

If you have the time, please post the code as an answer, just in case the YouTube video goes down.

avatar image TribalInstincts lgarczyn · Dec 18, 2019 at 05:15 AM 0
Share

Ah, I should have been more clear. That youtube link is an example of the end result I'm going for, not an implementation.

1 Reply

· Add your reply
  • Sort: 
avatar image
1

Answer by lgarczyn · Dec 18, 2019 at 03:09 PM

There are a lot of ways to do this.

The easiest way to do this is to use Mathf.SmoothdampAngle. Basically it has a target value, a current value, and a current velocity. It will automatically update the current angular velocity, and return the new position. It will never overshoot, and will always reach the target in a finite time.


So take the current angular velocity from the rigidbody, and input it with the current angle, target angle, some value for the time to change the controllability of the object, the max velocity and Time.fixedDeltaTime.

Then take the updated angular velocity, and apply it to the rigidbody. That's all. Every frame the rigidbody will apply the velocity, update the position, update the velocity because of drag. SmoothDampAngle will then recalculate a new velocity.


Because this function is not really made for this though, you might want to also set the new angle yourself on the FixedUpdate and/or remove the angular drag.

If you find the rotation too choppy, there are other possible tweaks. One of them is to update the position in both Update and FixedUpdate, but it requires calculating your own deltaTimes. You can do this because SmoothDamp is not sensitive to varying deltatimes.

You can also move to a kinematic rigidbody, and simply increment or decrement your own angular velocity on collisions, the use MoveRotation for perfect interpolation.

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

370 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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

2D Physics movement system is creating unexplained random variations. 0 Answers

Object with rigidbody2D doesn't move when it's supposed to 0 Answers

Unity2D Help with rigidbody character movement. 0 Answers

Unity 2D Platformer pixel perfect physics don't work 0 Answers

LookAt() disables the collision of my 2d object 2 Answers


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