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 JaredHD · Oct 29, 2017 at 10:59 AM · c#quaternioneuleranglesmathf.clamplocalrotation

Limiting rotation based on direction

Issue

Hello, So I'm trying to limit my walls from overlapping each other. So what I'm trying to do is clamp their directions to move either left or right but give them some leeway of 60 degrees. I believe this might have something to do with local rotation?


Walls


(The red walls are attached)

So In the picture, wall 1, when it goes forward like that, the red wall works 100%.
So wall 1 is at 90 degrees. The red wall is limited to 120-210 degrees, or 300-60 degrees.


Wall 2
So wall 2, it goes left. Sadly the red wall is being limited incorrectly. Currently the red wall should be able to move more left, but it does not.

alt text

Here is the code I use to limit the walls: NOTE: It is easier to read this in visual studio, or mono. It is more confusing in the webpage

 //The start tower is the first tower, it faces the mouse position
         startTower.transform.LookAt(endTower.transform);
 
         //If this wall is linked to another wall
         if (linked)
         {
             //Hit.transform is the wall that we hit with raycast, and our linked wall is attached to.
 
             //(Right Side)
             //If the wall is greater than the hit walls angle, and less than it the hit wall angle + 180
             if (startTower.transform.eulerAngles.y > Clamp0360(hit.transform.eulerAngles.y) && startTower.transform.eulerAngles.y < Clamp0360(hit.transform.eulerAngles.y +180))
             {
                 startTower.transform.eulerAngles = new Vector3(startTower.transform.eulerAngles.x, Mathf.Clamp(startTower.transform.eulerAngles.y, 
                     Clamp0360(hit.transform.eulerAngles.y + 30), Clamp0360(hit.transform.eulerAngles.y + 150)), startTower.transform.eulerAngles.z);
             }
             //Between If it is on the smaller side of the wall, (Left side)
             else if (startTower.transform.eulerAngles.y < Clamp0360(hit.transform.eulerAngles.y) || startTower.transform.eulerAngles.y > Clamp0360(hit.transform.eulerAngles.y-180))
             {
                 //Between 300-360
                 if (startTower.transform.eulerAngles.y > Clamp0360(hit.transform.eulerAngles.y-180))
                 {
                     startTower.transform.eulerAngles = new Vector3(startTower.transform.eulerAngles.x, Mathf.Clamp(startTower.transform.eulerAngles.y, 
                         Clamp0360(hit.transform.eulerAngles.y + 210), Clamp0360(hit.transform.eulerAngles.y + 270)), startTower.transform.eulerAngles.z);
                 }
                 //Between 0-90
                 else
                 {
                     startTower.transform.eulerAngles = new Vector3(startTower.transform.eulerAngles.x, Mathf.Clamp(startTower.transform.eulerAngles.y, 
                         Clamp0360(hit.transform.eulerAngles.y- hit.transform.eulerAngles.y), Clamp0360(hit.transform.eulerAngles.y-30)), startTower.transform.eulerAngles.z);
                 }
             }
         }

Edit: Here is Clamp0360

     public static float Clamp0360(float eulerAngles)
     {
         float result = eulerAngles - Mathf.CeilToInt(eulerAngles / 360f) * 360f;
         if (result < 0)
         {
             result += 360f;
         }
         return result;
     }

Any help would be greatly appreciated

walls-v2.png (163.1 kB)
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

0 Replies

· Add your reply
  • Sort: 

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

411 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

Related Questions

Why is my object's local x rotation not going past 90 degrees? 1 Answer

Code to rotate around a local axis until local Y is 0? 0 Answers

Rotation jumping to a different rotation after rotating a certain amount 0 Answers

check x axis rotation,limit objects rotation 1 Answer

how to apply overall rotation to collection of rotated objects 0 Answers


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