Cursor Lock to Center of screen script doesnt work please help.

My custom mouse look script is meant to lock the cursor in the center on the screen but it does not work for some reason. if you can also tell me how to make the script run in delta time that would be awesome to as this would help me with another problem with the pause menu.

@script AddComponentMenu ("Camera-Control/Mouse Look")
enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
var axes = RotationAxes.MouseXAndY;
var sensitivityX : float = 15;
var sensitivityY : float = 15;

var minimumX : float = -360;
var maximumX : float = 360;

var minimumY : float = -60;
var maximumY : float = 60;

var rotationX : float = 0;
var rotationY : float = 0;

public var lockCursor : boolean;

private var originalRotation : Quaternion;

// Called when the cursor is actually being locked

function DidLockCursor () {
    Debug.Log("Locking cursor");

    // Disable the button
    guiTexture.enabled = false;
}

// Called when the cursor is being unlocked
// or by a script calling Screen.lockCursor = false;
function DidUnlockCursor () {
    Debug.Log("Unlocking cursor");

    // Show the button again
    guiTexture.enabled = true;
}

function OnMouseDown () {
    // Lock the cursor
    Screen.lockCursor = true;
}

private var wasLocked = false;

function Update () {
	if (axes == RotationAxes.MouseXAndY) {
		rotationX += Input.GetAxis("Mouse X") * sensitivityX;
		rotationY += Input.GetAxis("Mouse Y") * sensitivityY;

		rotationX = ClampAngle (rotationX, minimumX, maximumX);
		rotationY = ClampAngle (rotationY, minimumY, maximumY);
		
		var xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
		var yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
		
		transform.localRotation = originalRotation * xQuaternion * yQuaternion;
	}
	else if (axes == RotationAxes.MouseX) {
		rotationX += Input.GetAxis("Mouse X") * sensitivityX;
		rotationX = ClampAngle (rotationX, minimumX, maximumX);

		xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
		transform.localRotation = originalRotation * xQuaternion;
	}
	else {
		rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
		rotationY = ClampAngle (rotationY, minimumY, maximumY);

		yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
		transform.localRotation = originalRotation * yQuaternion;
	}
	 // In standalone player we have to provide our own key
    // input for unlocking the cursor
    if (Input.GetKeyDown ("escape"));
        Screen.lockCursor = false;

    // Did we lose cursor locking?
    // eg. because the user pressed escape
    // or because he switched to another application
    // or because some script set Screen.lockCursor = false;
    if (!Screen.lockCursor && wasLocked) {
        wasLocked = false;
        DidUnlockCursor();
    }
    // Did we gain cursor locking?
    else if (Screen.lockCursor && !wasLocked) {
        wasLocked = true;
        DidLockCursor ();
    }
}

function Start () {
	if (rigidbody)
		rigidbody.freezeRotation = true;
	originalRotation = transform.localRotation;
}

static function ClampAngle (angle : float, min : float, max : float) : float {
	if (angle < -360.0)
		angle += 360.0;
	if (angle > 360.0)
		angle -= 360.0;
	return Mathf.Clamp (angle, min, max);
}

thanks again…

As is said here, it isn’t possible to set the cursor position without external .dlls. Screen.lockCursor doesn’t automatically set the position of the cursor to the centre of the screen, it only locks the position of the mouse at the current mouse position.

Also, Screen.lockCursor is already a boolean. There is no need to redeclare it as a boolean.

Hope that helps, Klep

You can use this script to lock and hide your cursor

Lock:

screen.lockCursor = true;

Hide:

screen.showCursor = false;