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 Alienjesus · Apr 25, 2011 at 05:00 PM · javascripterrorrotatelocalrotation

Rotation Script bug - rapidly alternating between positive and negative rotation

I'm writing a script to rotate an object in my game. It takes the objects starting rotation and adds more rotation to it dependent on the object which is rotating it (so if the object thats rotating it turns 20 degrees, so does the object. The script works fine for rotations between 0-180, but at 181 to about 356 it goes crazy, rapidly flipping the object back and forth as if it was mirroring the object on and off rapidly.

Here's my code - I looked through, and I can't find a flaw with it. Some of the things which may seem unnecessary have probably been added in an attempt to fix this issue.

var turnRot: float; var beingTurned: boolean = false; var fiducial: Transform; var startingRot: float; var modifiedRot: float;

function Update () {
//if this object is selected, find the amount of rotation applied if (beingTurned) { turnRot = fiducial.GetComponent(Movementscript).currentRot;

     if (turnRot < 0)
 {
     modifiedRot = (360 + turnRot);
     } else 
 { modifiedRot = turnRot;
 }
     Debug.Log (modifiedRot);
     transform.localRotation.eulerAngles.x = (startingRot +modifiedRot);


     }   
     }

function Turning () { beingTurned = true; startingRot = transform.localRotation.eulerAngles.x; Debug.Log ("I am being turned! :D"); }

function NotTurning () { beingTurned = false; Debug.Log ("I am not being turned :(" ); }

Basically, if the object is being turned, it gets the amount of rotation to add, and adds it to it's own starting rotation. The modifiedRot bit is just there to see if there was an issue with the rotation value switching between positive and negative, but it's not. the Debug.Log for modifiedRot outputs as always positive, so it's not that either.

All help is appreciated! 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
Best Answer

Answer by Uzquiano · Apr 25, 2011 at 05:15 PM

Hi,

well, maybe it is because of this:

"Do not set one of the eulerAngles axis separately (eg. eulerAngles.x = 10; ) since this will lead to drift and undesired rotations. When setting them to a new value set them all at once as shown above. Unity will convert the angles to and from the rotation stored in Transform.rotation"

You should something like

transform.eulerAngles = Vector3(10, yRotation, 0);
Comment
Add comment · Show 2 · 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 Alienjesus · Apr 25, 2011 at 05:52 PM 0
Share

Cheers, that sorted it.

avatar image Uzquiano · Apr 25, 2011 at 06:56 PM 0
Share

Great, another learnt thing ;)

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

No one has followed this question yet.

Related Questions

Issue with OnTriggerEnter. 1 Answer

Player not taking any damage 2 Answers

How to rotate a 2D object on touch 1 Answer

Making a pick up item that is timed, that moves,scales and rotates 1 Answer

Click on collider to rotate camera 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