x


MouseLock is not working

Hello,

Mouselock seems to not be working. It's probably my script, as I am new to unity and have no previous experience.

My code: *** function OnMouseDown() {

Screen.lockCursor = true;

} *** Can someone please tell me what I am doing wrong?

Thanks, MNKYband

more ▼

asked Jun 20 '11 at 11:28 PM

MNKYband gravatar image

MNKYband
4 5 6 8

OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider.

Jun 20 '11 at 11:41 PM Dreamblur
(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

try this code:

function Update() {
    //Mouse0 is left click, Mouse1 is right click, Mouse3 is middle click, and so on
    if(Input.GetKeyDown (KeyCode.Mouse0)) {
       Screen.lockCursor = true;
    }
}

or if what you want is when you click on say a GUI button, or also you could, with the following function, "click" a GUI box and a GUI label, etc.:

(but this is basically re-scripting the OnMouseDown function, but OnMouseDown only works when clicking a GUI element or collider like Dreamblur said.)

function Update() {
    //Mouse0 is left click, Mouse1 is right click, Mouse3 is middle click, and so on

    var rect : Rect;
    if(rect.Contains(Input.mousePosition)) {
       if(Input.GetKeyDown(KeyCode.Mouse0)) {
         Screen.lockCursor = true;
       }
    }
}

or c#:

using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {

    void Update() {
       Rect rect;
       if(rect.Contains(Input.mousePosition)) {
         if(Input.GetKeyDown(KeyCode.Mouse0)) {
          Screen.lockCursor = true;
         }
       }
    }
}
more ▼

answered Jun 20 '11 at 11:38 PM

Jesus_Freak gravatar image

Jesus_Freak
1.2k 38 44 59

You could, alternatively, use

if(Input.GetMouseButton(0)) { ...
Jun 20 '11 at 11:43 PM Chris D

Thanks!

Once again, sorry I ask such noobish questions. :/

Jun 21 '11 at 01:38 AM MNKYband

@MNKYband everyone starts somewhere!

Jun 21 '11 at 01:57 AM Chris D

@MNKYband yeah, don't worry, you'll learn the ways of scripting. and once you learn unityscript (aka javascript) very good, it's not that hard to learn c#, and it seems even easy. But you'll learn at your own pace.

Jun 21 '11 at 03:56 AM Jesus_Freak
(comments are locked)
10|3000 characters needed characters left

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 the MouseLook script to the capsule. /// -> Set the mouse look to use LookX. (You want to only turn character but not tilt it) /// - Add FPSInputController script to the capsule /// -> A CharacterMotor and a CharacterController component will be automatically added.

/// - 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 rotationY = 0F;

void Update ()
{
    if (axes == RotationAxes.MouseXAndY)
    {
       float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;

       rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
       rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);

       transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
    }
    else if (axes == RotationAxes.MouseX)
    {
       transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
    }
    else
    {
       rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
       rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);

       transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
    }
}

void Start ()
{
    // Make the rigid body not change rotation
    if (rigidbody)
       rigidbody.freezeRotation = true;
}

}

more ▼

answered Jun 21 '11 at 04:07 AM

exotic_gaming gravatar image

exotic_gaming
-34 5 6 7

Why are you posting the mouseLOOK script? This question is about LOCKing the cursor..

Jun 21 '11 at 04:09 AM Joshua
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

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

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x531
x477
x198
x79
x4

asked: Jun 20 '11 at 11:28 PM

Seen: 820 times

Last Updated: Jun 21 '11 at 04:09 AM