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 GutoThomas · Oct 10, 2011 at 02:46 AM · rotationeuleranglesmathfclamp

Clamp Rotation Problem

Hey guys, after a long time searching about a way to Clamp the rotation, I finally found out something. Everything's working Ok, except for one thing. The cannon I'm using for a game need to rotate along eulerAngles.x axis. The Start X rotation is 270, but even if I move it up or down, the rotation increase it value.

For exemple, when I move mouse up, the rotation increase from 270 to 345(value I want to clamp). And when I move mouse down, the rotation increase the same value, from 270, to 345.

What I want is that when I move mouse up, the rotation increase and when I move mouse down, the rotation decrease, so that way my Clamp should work correctly. Here's the code:


var angles: Vector3 = Vector3.zero;

var rotationVelocity: float;

function Start() {

angles.y = transform.eulerAngles.y;

angles.x = transform.eulerAngles.x;

angles.z = transform.eulerAngles.z;

}

function Update() {

print(transform.eulerAngles.x); // that's how I found out the problem

if(Input.GetAxis("Mouse Y") > 0) {

angles.x += rotationVelocity * Time.deltaTime;

angles.x = Mathf.Clamp(angles.x, 270, 345);

transform.eulerAngles.x = angles.x;

}

if(Input.GetAxis("Mouse Y") < 0) {

angles.x -= rotationVelocity * Time.deltaTime;

angles.x = Mathf.Clamp(angles.x, 270, 345);

transform.eulerAngles.x = angles.x;

}

}


Sorry about my English, I'm brazilian. Thanks from now!

Comment
Add comment · Show 1
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 10, 2011 at 03:18 AM 0
Share

Your code works fine for me. It isn't the most efficient set up ever, but I just pasted that script onto a cube, and got the behavior you just described to me that you wanted.

If you want slightly cleaner code, then you can take Input.GetAxisRaw() to get the sign of the axis movement then multiply by that.

 function Update() {

 var input = Input.GetAxisRaw("$$anonymous$$ouse Y");
     //returns -1 , 0 , or 1 based on movement.

 if(input != 0) {
     //We really only need to do the rest if we actually moved some.
     angles.x += rotationVelocity * Time.deltaTime * input;

     angles.x = $$anonymous$$athf.Clamp(angles.x, 270, 345);

     transform.eulerAngles.x = angles.x;

 }
 }

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by GutoThomas · Oct 10, 2011 at 04:22 AM

Thanks! I could find out and solve the problem!

Very nice tip to make the code cleaner! ;)

Thank you again!

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Find the difference between the Z rotation of two GameObjects 2 Answers

Bizzare problem with limiting camera veritcal rotation 2 Answers

Limit gameobject rotation to -480 and 480 degrees? 2 Answers

Clamping a wrapping rotation. 6 Answers

limit accelerometer controlled 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