Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 WaekBrosGames · Jun 03, 2014 at 12:36 AM · rotation

TRouble with quaternion

Hello im currently working on a project where i need a cube to rotate on command in specific directions for example i need the cube to rotate along its x axis to make the face to the left of the cube on the top but im having an issue where when i rotate the cube on its x and follow up rotating on its z it does a flip on the corner and ends up facing a completely unexpected way. I have a feeling it is to do with my little understanding of the quaternion values and functions

here is the code attach it to any cube and try flipping it vertically and follow up with a horizontal flip to see what i mean it doesn't happen all the time but if anyone has a fix i would appreciate it

 using UnityEngine;
 using System.Collections;
 
 public class CubeRotate : MonoBehaviour {
 
     public float speed = 55;
     private float rotation;
     Quaternion qTo;
 
     void Update ()
     {
 
 
         if (Input.GetKeyDown ("w")) {
             rotation -= 90;
             qTo = Quaternion.Euler (rotation,0,0);
 
         }
 
 
         if (Input.GetKeyDown ("s")) {
             rotation += 90;
             qTo = Quaternion.Euler (rotation,0,0);
         }
 
 
 
         if (Input.GetKeyDown ("d")) {
             rotation += 90;
             qTo = Quaternion.Euler (0, 0, rotation);
                             
         }
 
 
         if (Input.GetKeyDown ("a")) {
             rotation -= 90;
             qTo = Quaternion.Euler (0, 0, rotation);
         }
     
 
         transform.rotation = Quaternion.RotateTowards (transform.rotation, qTo, speed * Time.deltaTime);
 
     }
 
 }



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
0

Answer by Kiwasi · Jun 03, 2014 at 12:58 AM

I believe the problem is using += on rotation. This will have the effect of increasing the value of rotation by 90 every frame. However 360=0 so the target rotation will be going all over the place.

To confirm this problem you could use Debug.Log(rotation).

Solution is to change the += sign to an = sign.

If you need relative rotation you could use

 rotation = transform.rotation.eulerAngles.x + 90;
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

22 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

Related Questions

Flip over an object (smooth transition) 3 Answers

Transform a Vector by a Quaternion 1 Answer

Have an object continuously rotate towards another 1 Answer

Character Controller slides sideways when it hits objects are angles different from 90 degrees 1 Answer

Move and Rotate object with "Parent" without Parenting 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