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 RYNdesigns · May 30, 2020 at 01:25 PM · rotationrigidbodycamera-movementcamera rotatecamera rotation

MoveRotation stops working while player is moving

I started learning Unity not so long ago, and I wrote this third person camera controller script which works perfectly until I start moving the "player". The player in this case is just a simple cube with basic movements. This is my camera controls script:

 using UnityEngine;
 
 public class TargetedCameraController : MonoBehaviour
 {
     public GameObject target;
     public Vector3 offset;
     public float rotationSpeed;
     public float movementSmoothness;
     public float maxYRotation;
     public float minYRotation;
     public float maxCameraDistance;
     public float zoomSmoothness;
     public float cameraClippingMargin;
     GameObject helper;
 
     private void Start()
     {
         helper = gameObject.GetComponentInParent<Rigidbody>().gameObject;
         allowPlayerInput = true;
     }
 
     private void Update()
     {
         PlayerInput();
         CastRay();
         CameraRotation();
     }
     private void FixedUpdate()
     {
         FollowTarget();
     }
 
     //PLAYER INPUT MANAGER
     [HideInInspector] bool allowPlayerInput;
     private float inputX;
     private float inputY;
     int PlayerInput()
     {
         if (allowPlayerInput)
         {
             inputX = Input.GetAxis("Mouse X");
             inputY = Input.GetAxis("Mouse Y");
         }
         else
         {
             inputX = 0;
             inputY = 0;
         }
         return 0;
     }
 
     //CAMERA ROTAION MANAGER
     float rotY;
     float rotX;
     int CameraRotation()
     {
         //Calculate Vertical Rotation
         rotY -= inputY * rotationSpeed;
         rotY = Mathf.Clamp(rotY, minYRotation, maxYRotation);
 
         //Calculate Horizontal Rotation
         rotX += inputX * rotationSpeed;
         if(rotX >= 360)
         {
             rotX = 0;
         }
         if(rotX <= -360)
         {
             rotX = 0;
         }
 
         //Set Rotation
         helper.GetComponent<Rigidbody>().MoveRotation(Quaternion.Euler(rotY, rotX, 0));
         return 0;
     }
 
     //CAMERA MOVEMENT MANAGER
     Vector3 smoothPos;
     Vector3 offsetPos;
     int FollowTarget()
     {
         //Sets desired camera position, smooths follow and adds the custom offset
         offsetPos = target.transform.forward * offset.z + target.transform.right * offset.x + target.transform.up * offset.y;
         smoothPos = Vector3.Slerp(target.transform.position + offsetPos, helper.transform.position, movementSmoothness);
         helper.transform.position = smoothPos;
 
         //Set camera position
         transform.position = helper.transform.position + helper.transform.forward * -hitDistance;
         return 0;
     }
 
     //CAMERA PHYSICS MANAGER
     private Ray cameraDistanceRay;
     private float hitDistance;
     int CastRay()
     {
         //Cast the ray
         cameraDistanceRay = new Ray(helper.transform.position, transform.forward * (-hitDistance - cameraClippingMargin));
 
         //Get hit distance
         RaycastHit hit;
         if(Physics.Raycast(cameraDistanceRay, out hit) && hit.distance < hitDistance + 1 && hit.point != null)
         {
             hitDistance = Mathf.Clamp(hit.distance, 0.5f, maxCameraDistance);
             hitDistance = hitDistance - cameraClippingMargin;
         }
         else if (hitDistance != maxCameraDistance)
         {
             hitDistance = Mathf.Lerp(hitDistance, maxCameraDistance, zoomSmoothness);
         }
         return 0;
     }
 }

The "helper" is an empty object that I use to rotate and move the camera. The camera is moved away from the helper using the maxCameraDistance value and the Raycast hit distance. After some debugging I found that this is the line of code that gives me this problem:

 helper.GetComponent<Rigidbody>().MoveRotation(Quaternion.Euler(rotY, rotX, 0));

because when I try to change it to something, it doesn't stop working when the cube is moving (but then I cant make a limit for Y rotation so I really want to use this)

Here's a gif of what's going on: https://gyazo.com/35d6e35e8f4fe013b4b67bcad8ef4fea

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

210 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

Related Questions

How can I rotate my camera when player has rigidbody? 0 Answers

How to allow camera to complete an upside down rotation while using LookAt() 0 Answers

How to make the camera follow the player while still being able to be rotated? 1 Answer

Swipe angle and Rotation of camera to movement 1 Answer

Why is my camera not snapping 90 degrees? 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