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 /
  • Help Room /
avatar image
0
Question by Kie789 · Apr 14, 2020 at 02:26 PM · 2drotationangles2d platformer2.5d

Orbiting Crosshair issue when trying to stop at a specific angle

Hi Guys, I am pretty new here and I recently followed a tutorial to get me onto Game Development again. I have been working on a simple 2.5D game where the main player character is able to shoot spheres for the time being. I have managed to implement a crosshair that rotates around the player and managed to get it to stop when it reaches 90 and -90 degrees using the mouse.

However the issue I am having is when I move the mouse fast the crosshair seems to add more or less rotation which means on the next frames it does not stick to the 90 and -90 degrees I desire.

Image 1 - what I want to happen: Image 1 Image 2 - What happens if I move the mouse fast: Image 2

Code is below: public class CrosshairManager : MonoBehaviour { [SerializeField] private Transform _pivotPosition;

     [SerializeField]
     public float yOrbit = 0;
 
     [SerializeField]
     public float yOrbitOver, _oldAngle, _angle;
 
     [SerializeField]
     private bool _goingUp = false, _goingDown = false, _stop = false;
 
     public static Vector3 RotatePointAroundPivot(Vector3 point, Vector3 pivot, Quaternion angle)
     {
         return angle * (point - pivot) + pivot;
     }
 
     // Update is called once per frame
     void FixedUpdate()
     {
         //Work out angle from crosshair position and mouse position
         Vector3 crosshairVector = Camera.main.WorldToScreenPoint(transform.position);
         crosshairVector = Input.mousePosition - crosshairVector;
         _angle = Mathf.Atan2(crosshairVector.y, crosshairVector.x) * Mathf.Rad2Deg;
 
         //Set boolean flags to see if mouse is going up or down
         if (_angle > 0)
         {
             _goingUp = true;
             _goingDown = false;
         }
         else if (_angle < 0)
         {
             _goingDown = true;
             _goingUp = false;
         }
 
         //Check if mouse is going up or down and add angle to yOrbit
         if (_goingDown && yOrbit > -90)
         {
             Debug.Log("Going Down");
             yOrbit += (_angle);
         }
         else if (_goingUp && yOrbit < 90)
         {
             Debug.Log("Going Up");
             yOrbit += (_angle);
         }
 
         //Check if yOrbit (angle of crosshair) is over 90 and stop it in place
         if (yOrbit >= 90.0f)
         {
             yOrbitOver = yOrbit - 90.0f;
             Debug.Log(yOrbitOver);
 
            _angle = _angle + yOrbitOver;
 
             yOrbit -= yOrbitOver;
             _stop = true;
         }
         //Check if yOrbit (angle of crosshair) is below -90 and stop it in place
         else if (yOrbit <= -90.0f)
         {
             yOrbitOver = yOrbit + 90.0f;
             Debug.Log(yOrbitOver);
 
             _angle = _angle - yOrbitOver;
             
             yOrbit -= yOrbitOver;
             _stop = true;
         }
         //If within desired angle restraints then set stop to false and allow movement
         else
         {
             _stop = false;
         }
         //Rotate the corsshair around the pivot point
         if (_stop == false)
         {
             transform.position = RotatePointAroundPivot(transform.position, _pivotPosition.transform.position, Quaternion.Euler(0, 0, _angle));
         }
     }
 }


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

363 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

Related Questions

Trying to rotate my character to follow the terrain 0 Answers

Rotate Player "slowly" towards default rotation. (2D Rigidbody) 1 Answer

Translating a transform also rotates it (Unity 2017.3.1f1) 1 Answer

problem of rotate joint of hands 0 Answers

Object can't get to the target point 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