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 Lairinus · Aug 20, 2017 at 12:52 PM · c#rotationrigidbodylerp

Quaternion.Lerp finishing before "t" parameter hits 1

The Problem:

I wish to rotate a cube to 180 degrees from 0 degrees. Although this is being completed, I do not have any way to track this because the "t" parameter (lerpTime) is only 0.3-0.5 instead of 1 when the rotation is 180.

To break this down more simply, "Test" is being debugged to my console way after the rotation is completed.

The Code:

     Rigidbody rbdy = null;
     IEnumerator RotateTest(bool reset)
     {
         float speed = 2f;
         Quaternion oldRot = rbdy.rotation;
         Quaternion newRot = rbdy.rotation * Quaternion.Euler(180, 0, 0);
         float lerpTime = 0;
         while (lerpTime < 1)
         {
             yield return new WaitForSeconds(Time.fixedDeltaTime);
             Quaternion nextRot = Quaternion.Lerp(rbdy.rotation, newRot, lerpTime);
             lerpTime += Time.fixedDeltaTime * speed;
             rbdy.MoveRotation(nextRot);
             Debug.Log(lerpTime);
         }
 
         rbdy.rotation = newRot;
 
         Debug.LogWarning("Test");
         yield break;
     }

Further

  1. I have tried setting the "newRot" value to just the Quaternion.Euler(180,0,0) without multiplying the object's rotation with the same exact result.

  2. This rotation is incredibly quick (compared to similar Vector3.Lerps I have implemented). At a speed of 1 it takes maybe a second for the rotation to complete.

Question

How do I properly rotate an object using Quaternion.Lerp and properly track when the rotation ended?

Comment
Add comment · Show 5
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 tanoshimi · Aug 20, 2017 at 12:58 PM 0
Share

"This rotation is incredibly quick (compared to similar Vector3.Lerps I have implemented). At a speed of 1 it takes maybe a second for the rotation to complete."

At a speed of 1, it should take exactly one second to complete. Because you're doing this:

 lerpTime += Time.fixedDeltaTime * speed;

If you want it to take longer, reduce speed.

avatar image Lairinus tanoshimi · Aug 20, 2017 at 01:10 PM 0
Share

Thanks for the comment.

At a speed less than 1 (around 0.5) the rotation finishes over a longer period of time as expected, but the "t" parameter is then 0.1 or 0.2 when the rotation finishes. For instance, it takes about 2 or 3 seconds to finish the rotation with a speed of 0.5, but even after the rotation ends it takes another 15 or so seconds to be marked as complete.

avatar image tanoshimi · Aug 20, 2017 at 01:16 PM 0
Share

To be honest, I'm not entirely sure why you're using

 yield return new WaitForSeconds(Time.fixedDeltaTime);

at all. Why not simply use:

 yield return null;

?

avatar image Lairinus tanoshimi · Aug 20, 2017 at 01:31 PM 0
Share

I am using Time.fixedDeltaTime because I am moving a rigidbody inside of a coroutine, so it should be close to (if not exactly) on-par with FixedUpdate().

In any event, I tried both yield return null and Time.deltaTime ins$$anonymous$$d with the same result at a speed of 0.5F. I updated the lerpTime to use Time.deltaTime ins$$anonymous$$d of FixedDeltaTime as well.

alt text

Image may clarify something that I couldn't with words alone.

*Edited for clarity

avatar image hexagonius Lairinus · Aug 20, 2017 at 04:58 PM 0
Share

fixedDeltaTime is just a float, has nothing to do with FixedUpdate. You want to yield until WaitForFixedUpdate.

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

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

Flip over an object (smooth transition) 3 Answers

MoveTowards rotation not always functioning 0 Answers

Configurable Joints pass through colliders 2 Answers

Rotation jumping to a different rotation after rotating a certain amount 0 Answers

Will someone please help me??? 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