- Home /
 
MouseLook Problem
I am a complete idiot when it comes to scripting, so please bear with me. Anyway, I want to make a script that will activate the pre-installed Unity script 'MouseLook' when control is pressed down. This is a C# script that I want to activate with a UnityScript (although I don't know if that matters). Please help!!!
This is what I've tried to make, but I messed it up somewhere. Actually, I never finished it.
function Update () { if (Input.GetKeyDown (KeyCode.LeftControl))
  
               //Right here, I want to activate the C# MouseLook script that comes with Unity... Any help? } 
I know, I probably won't understand anything from what you guys try to tell me, but at least I could make a deserving game.
Answer by IJM · Oct 20, 2010 at 10:08 PM
I think that this will work for you:
using UnityEngine; using System.Collections;
 
               /// MouseLook rotates the transform based on the mouse delta. /// Minimum and Maximum values can be used to constrain the possible rotation
 
               /// To make an FPS style character: /// - Create a capsule. /// - Add a rigid body to the capsule /// - Add the MouseLook script to the capsule. /// -> Set the mouse look to use LookX. (You want to only turn character but not tilt it) /// - Add FPSWalker script to the capsule
 
               /// - Create a camera. Make the camera a child of the capsule. Reset it's transform. /// - Add a MouseLook script to the camera. /// -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.) [AddComponentMenu("Camera-Control/Mouse Look")] public class MouseLook : MonoBehaviour {
 
                public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
 public RotationAxes axes = RotationAxes.MouseXAndY;
 public float sensitivityX = 15F;
 public float sensitivityY = 15F;
 public float minimumX = -360F;
 public float maximumX = 360F;
 public float minimumY = -60F;
 public float maximumY = 60F;
 float rotationX = 0F;
 float rotationY = 0F;
 Quaternion originalRotation;
 void Update()
 {
     if(Input.GetKey(KeyCode.LeftControl))
         OldUpdate();
 }
 void OldUpdate()
 {
     if (axes == RotationAxes.MouseXAndY)
     {
         // Read the mouse input axis
         rotationX += Input.GetAxis("Mouse X") * sensitivityX;
         rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
         rotationX = ClampAngle (rotationX, minimumX, maximumX);
         rotationY = ClampAngle (rotationY, minimumY, maximumY);
         Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
         Quaternion yQuaternion = Quaternion.AngleAxis (rotationY, -Vector3.right);
         transform.localRotation = originalRotation * xQuaternion * yQuaternion;
     }
     else if (axes == RotationAxes.MouseX)
     {
         rotationX += Input.GetAxis("Mouse X") * sensitivityX;
         rotationX = ClampAngle (rotationX, minimumX, maximumX);
         Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
         transform.localRotation = originalRotation * xQuaternion;
     }
     else
     {
         rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
         rotationY = ClampAngle (rotationY, minimumY, maximumY);
         Quaternion yQuaternion = Quaternion.AngleAxis (-rotationY, Vector3.right);
         transform.localRotation = originalRotation * yQuaternion;
     }
 }
 void Start ()
 {
     // Make the rigid body not change rotation
     if (rigidbody)
         rigidbody.freezeRotation = true;
     originalRotation = transform.localRotation;
 }
 public static float ClampAngle (float angle, float min, float max)
 {
     if (angle < -360F)
         angle += 360F;
     if (angle > 360F)
         angle -= 360F;
     return Mathf.Clamp (angle, min, max);
 }
 
               } 
 
              came up with a new problem... is this right?
public class $$anonymous$$ouseLook : $$anonymous$$onoBehaviour; { void Update(); { if (Input.Get$$anonymous$$ey($$anonymous$$eyCode.LeftControl)); OldUpdate(); { runscript ("$$anonymous$$ouseLook") } }
}
Hey, I edited my answer. Delete the whole code form your $$anonymous$$ouseLook.cs and copy this one. It will move your mouse only if left CTRL is down.
Your answer