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 glg · Jun 06, 2018 at 11:14 AM · rotation3dslider360-degrees

360° slerp horizontal rotation camera with the slider

Hello guys. I'm trying to create a script that allows me to rotate the camera, with a Slerp effect, in a range from 0 ° -360 ° (y-axis) through a horizontal slider. The camera only rotates along an axis (I'm in the middle of a room and I have to turn around using a horizontal slider)

I made two scripts: The first to be applied to a reference cube to obtain the rotation and the second to be applied to the chamber to obtain the Slerp effect, while following the rotation of the cube.

360 ° cube rotation script:

     public float speed;
     public Vector3 offset;
     public GameObject ObjectToRotate;
 
     public void SliderChanged(float speed)
     {
         ObjectToRotate.transform.rotation = Quaternion.Euler (speed*offset);
 }

Script for camera rotation with Slerp effect:

     public Transform target;
     public float Speed = 0.1F;
 
 
     // Update is called once per frame
     void Update () {
         transform.rotation = Quaternion.Slerp (transform.rotation, target.rotation, Speed);        
     }
 }


It works but with some problems: if I run too fast with the slider from the left (0 °) to the right (359 °), the Slerp rotation does not continue correctly but seems to rotate only 1 °, as if it were back.

How can I solve? Thanks!

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
1

Answer by Harinezumi · Jun 06, 2018 at 11:28 AM

I think that happens because Quaternion.Slerp() "gives a straightest and shortest path between its quaternion end points" (see wikipedia about quaternion slerp). So when you go from 0 to 359, the shortest path is a 1 degree rotation, but in the other direction. In fact, this will happen for any rotation change greater than 180 degree.

To achieve rotation in only one direction, try Quaternion.Lerp() or Quaternion.LerpUnclamped().

Comment
Add comment · Show 1 · 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 glg · Jun 07, 2018 at 12:54 PM 0
Share

Thanks for the reply @Harinezumi . I've tried both Quaternion.Lerp () and Quaternion.LerpUnclamped () but the error is still the same. Does not work

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

130 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

Related Questions

Rotate rigidbody towards mouse position 0 Answers

How to use mathf.clamp? 2 Answers

change direction by rotating object around y axis and adding relative torque 1 Answer

Rotation Question in Top-down 3D Game 0 Answers

Problem with enemy rotation 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