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 drorriov · Jan 24, 2018 at 07:08 AM · c#unity 52danglerotation detection

Detect Full 360 rotation of an object when direction changes and change it's color.

Hello Guys,

I hope there is a vector math formula for this.

Rules are simple:

  1. GameObject can be rotated to the right or left from any point.

  2. If player change rotation direction we need to start measuring a new 360 rotation.

  3. Color change from white to green when measuring the 360 rotation.

This is my current code:

  private void Update()
     {
        Vector3 temp = Input.acceleration.normalized;
       temp.z = 0;
       currentLetterGameObject.transform.up = temp.normalized;

      //direction right
         if (MyGameObject.transform.eulerAngles.z > previousAngle)
         {
             if (rotationRight)
             {
                 rotationCount = 0;
                 startRotationAngle = previousAngle;
                 rotationRight = false;
             }
     
             rotationCount = (Mathf.Abs(MyGameObject.transform.eulerAngles.z) - Mathf.Abs(startRotationAngle)) / 360;
             MyGameObject.GetComponent<LetterBase>().LetterText.color = Color.Lerp(gameController.LetterDefaultColor, Color.green, rotationCount);
         }
          //direction left
         if (MyGameObject.transform.eulerAngles.z < previousAngle)
         {
             if (!rotationRight)
             {
                 rotationCount = 0;
                 startRotationAngle = previousAngle;
                 rotationRight = true;
             }
     
             rotationCount = (Mathf.Abs(MyGameObject.transform.eulerAngles.z - 360) - Mathf.Abs(startRotationAngle - 360)) / 360;
             MyGameObject.GetComponent<LetterBase>().LetterText.color = Color.Lerp(gameController.LetterDefaultColor, Color.green, rotationCount);
         }
         //full circle
         if (rotationCount > 0.925f)
         {
             MyGameObject.LetterText.color = Color.green;
             rotationCount = 0;
             Debug.log("END OF GAME");
             //Quit
         }
     }


Issues:

  1. It's not solid code, i look for rotationCount>0.925f to try to detect full circle, and it can be skipped if player moves rotation too fast.

  2. If reaching MyGameObject.transform.eulerAngles.z to ZERO angle it reset the color to white and reset starting point (it jumps between two "if's" and reset parameters).

This is a challenge if someone accepts it, i can't seem to solve it correctly... :\

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
0

Answer by SunnyChow · Jan 24, 2018 at 10:26 AM

directly using transform.eulerAngles is a bad idea. Unity doesn't store this angle value, it's calculated from transform.rotation which is Quaternion. So some time it goes negative or completely mess up all axis. I would use Quaternion to do calculation and only convert it to Vector3 in last step.

 // get the rotation between this frame and last frame
 Quaternion rotated = Quaternion.Inverse(lastRotation)*transform.rotation;
 Vector3 rotatedAngle = rotated.eulerAngles;
 lastRotation = transform.rotation;
 // make sure the result is between -180 and 180
 if (rotatedAngle .y<-180)rotatedAngle.y +=360;
 if (rotationAngle.y>180)rotatedAngle.y -=360;
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 drorriov · Jan 25, 2018 at 07:16 AM 0
Share

Thanks for your detailed reply! It seems i still have two things left:

[1] I Update the gameObject rotation by using acceleration (Added to question):

   Vector3 temp = Input.acceleration.normalized;
   temp.z = 0;
   currentLetterGameObject.transform.up = temp.normalized;

Not sure how to combine it with your code.

[2] I need to have 0 to 1 values while GameObject is rotating to a specific side to change it's color gradually using the Lerp function.

avatar image
0

Answer by giantkilleroverunity3d · May 03, 2019 at 06:25 PM

Very sloppy here. Missing or bad variable naming, i.e. rotationAngle declaration missing. Great description in @SunnyChow comment but code lacking. But this is the closest answer to 'Counting revolutions forward or reverse' that I could find after 3 days searching. Most elbow benders just substitute revolution with rotation which is abhorrently incorrect. I cannot find a revolution answer with wading through tons of rotation suggestions. I would bet that there are probably good revolution counting scripts out there but good luck finding them amidst all the rotation expert answers.

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

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

Button Enabling/Disabling using Collision Triggers? 1 Answer

How to Set the Game Speed Based on the Player's Current Score? 1 Answer

How to make the calculated angle respective of the players rotation? 1 Answer

Distribute terrain in zones 3 Answers

How can I limit the rotational speed of a gameObject tracking my mouse? 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