- Home /
How to rotate my camera?
I copy the FPS scripts in standard asset example and it's truely work,but I can't understand how it work. I think this script is too complex,but when I want to make a simple version,it's never work.it's my code for camera rotate.it just can shake my camera.
     using UnityEngine;
     using System.Collections;
     public class MyFPML : MonoBehaviour {
     
         private float x;
         private float y;
         private Vector3 targetRotation;
         private Vector3 rotateValue;
         private Quaternion rotation;
     
         void Start ()
         {
             rotation = transform.rotation;
         }
         
         void Update ()
          {
             x = Input.GetAxis("Mouse X");
             y = Input.GetAxis("Mouse Y");
             Debug.Log(x + ":" + y);
             rotateValue = new Vector3(x, y, 0);
             targetRotation = transform.position + rotateValue;
             rotation = Quaternion.Euler(x, y, 0);
             transform.rotation = rotation;
             }
     }
Answer by Nido · May 02, 2016 at 02:03 PM
Tested and working:
 using UnityEngine;
 using System.Collections;
 
 public class CamRotation : MonoBehaviour 
 {
     private float x;
     private float y;
     private Vector3 rotateValue;
 
     void Update()
     {
         y = Input.GetAxis("Mouse X");
         x = Input.GetAxis("Mouse Y");
         Debug.Log(x + ":" + y);
         rotateValue = new Vector3(x, y * -1, 0);
         transform.eulerAngles = transform.eulerAngles - rotateValue;
     }
 }
Watch out. I changed the class name, so use yours ins$$anonymous$$d!
Answer by Yaw-Loon · May 19, 2016 at 02:18 PM
 using UnityEngine;
 using System.Collections;
 public class FPSRotate : MonoBehaviour
 {
     public Camera cam;          //Main camera for rotate in y-axis
     void Update()               //Updated every frame;
     {
         this.LookRotation(transform, cam.transform);    //Call LookRotation() to change the x-rotation of the gameobject and the y-rotation of camera
     }
     public void LookRotation(Transform character, Transform camera)     //Change the x-rotation of the gameobject and the y-rotation of camera
     {
         float yRot = Input.GetAxis("Mouse X") * 2f;     //get x and y of mouse in screen
         float xRot = Input.GetAxis("Mouse Y") * 2f;
         character.localRotation *= Quaternion.Euler(0f, yRot, 0f);      //To change character's rotation around y-axis
         camera.localRotation *= Quaternion.Euler(-xRot, 0f, 0f);        //To change camera's rotation around x-axis
         camera.localRotation = ClampRotationAroundXAxis(camera.localRotation);  //Clamp camera's rotation
     }                                                                   //The key point is use localRotation,not rotation or Quaternion.Rotate.
     Quaternion ClampRotationAroundXAxis(Quaternion q)       //The method of clamp rotation,I can't understand it;use it carefully.
     {
         q.x /= q.w;
         q.y /= q.w;
         q.z /= q.w;
         q.w = 1.0f;
         float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan(q.x);
         angleX = Mathf.Clamp(angleX, -90f, 90f);
         q.x = Mathf.Tan(0.5f * Mathf.Deg2Rad * angleX);
         return q;
     }
 }
//I use these code now,but your code also awsome.
Answer by DimitrisPtrs · Oct 24, 2021 at 03:14 PM
@ Yaw-Loon I found a simplified way with less commands!!!Here it is:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 public class CamRotation : MonoBehaviour
 {
      public float camSpeed = -0.5f;
      private float x;
     private float y;
     private Vector3 rotateValue;
 
      void Update()
     {
          x = Input.GetAxis("Mouse X");
         y = Input.GetAxis("Mouse Y");
         Debug.Log(x + ":" + y);
         rotateValue = new Vector3(y, x * -1, 0);
         transform.eulerAngles = transform.eulerAngles - rotateValue;
         transform.eulerAngles +=  rotateValue * camSpeed;
     }
 }
But be aware!!! You have to change the name of the public class, and the cam speed has to be a negative number.
Also, this way you can change the rotation speed as well!!!! Cool, right?!?!?
Your answer
 
 
             Follow this Question
Related Questions
Limiting the rotation to 180 degrees 0 Answers
Moving Camera on player stop then move and rotate to separate point? 0 Answers
Rotating a camera that has MouseLook.cs attached 0 Answers
Camera Rotation Tips 1 Answer
How to make the camera rotate only when right click is held down on the mouse? 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                