• 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 dot · Oct 03, 2010 at 09:08 PM · rotation

how to "ease" a rotation?

I want to make something like this

function onMouseOver(){

if(Input.GetMouseButtonDown(0)){ transform.Rotate(Vector3.forward * 90); } }

Only instead of "snapping" rotation into the next 90 degrees, I'd think it would be better for the rotation to be visible. To be somehow "eased", and for the player to see, that the plane has rotated. not just snapped/teleported into place.

it should be an easy question. does anybody know the answer? thank you in advance.

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

2 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by · Oct 03, 2010 at 11:44 PM

This is based on Eric's MoveObject snippet that he's posted around the place.

function Update () { if ( Input.GetMouseButtonDown(0)) RotateObject(transform.rotation,Quaternion.Euler(transform.rotation.eulerAngles + Vector3.forward * 90),2.0); }

function RotateObject(startRot : Quaternion, endRot : Quaternion, rotateTime : float) { var i = 0.0; var rate = 1.0/rotateTime; while (i < 1.0) { i += Time.deltaTime * rate; transform.rotation = Quaternion.Lerp(startRot, endRot, Mathf.SmoothStep(0.0, 1.0, i)); yield; } }

There might be a better way to calculate the 'endRot' Quaternion, but I've tested this and it works. You can pass in the 'rotateTime' and it eases in and out the movement using SmoothStep.

Comment
Add comment · Show 4 · 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 Peter G · Oct 03, 2010 at 11:48 PM 0
Share

Oops, looks like we posted at the same time. I'd delete my, but I'm not real sure what he's asking. I first thought he meant what you were saying, but then I noticed that he wasn't frame rate independent which would also cause that jump he is seeing so I figure I would leave it until he better explained what he wanted :).

avatar image · Oct 04, 2010 at 12:20 AM 0
Share

Oh, haha, didn't even notice. I'll update $$anonymous$$e to explain that it's a oneshot click-to-rotate thing.

avatar image dot · Oct 05, 2010 at 01:41 AM 0
Share

I think that's the code that I'm looking for. basically, I'm looking for a code that would turn a rubik cube's "slice" a 90 degree this way or that way. if a button is pressed. Iguess that's the code I'm looking for. if you have some better ideas, based on the fact that it's a rubik's cube, please let me know. Thank you for that though, it does what it should. Thanks!

avatar image dot · Oct 05, 2010 at 03:50 AM 0
Share

ow, now going along with the project, I see that I need an easing for RotateAround function. not "rotate" and I don't think I understand the code enough to convert it from one to another. do you think you could help?

avatar image
2

Answer by Peter G · Oct 03, 2010 at 11:44 PM

Try this:

function OnMouseOver(){

 if(Input.GetMouseButtonDown(0)){
      transform.Rotate(Vector3.forward * 90 * Time.deltaTime);
 }

}

Time.deltaTime = 1/FPS so your object will be rotating at 90 degrees a second.

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

No one has followed this question yet.

Related Questions

Flip over an object (smooth transition) 3 Answers

easing a rotation of ROTATE AROUND 1 Answer

Easing with Mouse Release 2 Answers

Terrain tree painter lays trees horizontally on the ground 1 Answer

AddForce to parent based on child's rotation C# 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