- Home /
Mouse Look from scratch rotating Z axis
I wrote a script to use the mouse to look around, but I'm having trouble, because it is rotating the z axis.
 #pragma strict
 var mouseSpeed = 0.1;
 
 function Update()
  {
  //if(rigidbody)
  // rigidbody.freezeRotation = true;
  Screen.lockCursor = true;
 
  var x : float = mouseSpeed * Input.GetAxis("Mouse X");
  var y : float = mouseSpeed * Input.GetAxis("Mouse Y");
 
  transform.Rotate(-y, x, 0.0);
  }
You'll see that I commented out rigidbody.freezeRotation because it didn't work, nor did simply using "transform.rotation.z = 0;".
Here are some details about my program: Capsule [Rigidbody, has movement script]
Plane [As a platform] Cube [As an object to jump on] Thanks in advance!Main Camera [has mouse look script]
Answer by rutter · Oct 18, 2013 at 07:45 PM
When your object rotates around its X axis, its local Y axis changes. If you want to rotate around the world axes, [you can specify that]((http://docs.unity3d.com/Documentation/ScriptReference/Transform.Rotate.html)):
 transform.Rotate(-y, x, 0.0, Space.World);
what about:
 transform.eulerAngles = new Vector3 (x, y, 0);
you might need to change x for y and y for x
AND OFC!!! :
 var x : float += mouseSpeed * Input.GetAxis("$$anonymous$$ouse X");
 var y : float += mouseSpeed * Input.GetAxis("$$anonymous$$ouse Y");
without that it'll rotate you only for 1°
Hey, I'm having the same problem and these solutions didn't work :/. Any updates?
This worked for me. However, I only locked the Y axis to Space.World, and kept the X axis local. If they are both locked the problem persisted. Here is what my code looked like:  if(Input.GetAxis("$$anonymous$$ouse Y")!=0){
 
                                   transform.Rotate(-Input.GetAxis ("$$anonymous$$ouse Y")*turnSpeed, 0, 0, Space.World);
             }
 if(Input.GetAxis("$$anonymous$$ouse X")!=0){
                  transform.Rotate(0, Input.GetAxis("$$anonymous$$ouse X")*turnSpeed, 0);
             }
  
Answer by static_cast · Oct 28, 2013 at 09:54 PM
  void Update()
   {
   //We wanna make sure our cursor is locked
   if(Screen.lockCursor == false)
    Screen.lockCursor = true;
 
   //Weird Calculationz
   yRotation -= Input.GetAxis("Mouse Y") * rotationSpeed * Time.deltaTime;
   yRotation = Mathf.Clamp(yRotation, -80, 80);
   xRotation += Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime;
   xRotation = xRotation % 360;
 
   //Rotate camera up+down, player left+right
   transform.localEulerAngles = new Vector3(yRotation, 0, 0);
   player.transform.localEulerAngles = new Vector3(0, xRotation, 0);
   }
This is my new code.
Your answer
 
 
             Follow this Question
Related Questions
MouseOver Doesn't work ON trigger 3 Answers
Is it a bug? 1 Answer
Alt+Tab pointer problem 0 Answers
Mouse Movement on z-axis 0 Answers
