Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by phonepl8 · Apr 13, 2012 at 06:56 PM · javascriptmouselook

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...

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Kleptomaniac · Apr 14, 2012 at 10:10 AM

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

Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image phonepl8 · Apr 14, 2012 at 12:57 PM 0
Share

Thanks for the Reply, don't suppose you know how to make the script run in deltatime so when i do time.Deltatime =0; the script stops as well as the whole game. Currently the whole game stops correctly except for the main camera which can still move.

avatar image Kleptomaniac · Apr 15, 2012 at 07:45 AM 0
Share

I'm not exactly sure what you mean ... Time.deltaTime is a measure in milliseconds of how long it took to render the previous frame ... are you talking about Time.timeScale? Setting this to 0 will stop the game.

If you want to stop the main camera from moving, try this:

 private var mouseX : $$anonymous$$ouseLook;
 private var mouseY : $$anonymous$$ouseLook;
         
 function Start () {
     
     mouseX = Camera.main.transform.parent.GetComponent($$anonymous$$ouseLook);
     mouseY = Camera.main.GetComponent($$anonymous$$ouseLook);
     
 }
 
 function Update () {
     
     if (//Condition is met) {
         mouseX.enabled = false;
         mouseY.enabled = false;
     }
 }


avatar image
0

Answer by MonsterGamingHD · May 04, 2013 at 10:51 PM

You can use this script to lock and hide your cursor

Lock:

screen.lockCursor = true;

Hide:

screen.showCursor = false;

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image ValveFan · Jun 18, 2013 at 10:20 PM 0
Share

I tried that and it said "unknown identifier: 'screen' ". XD

Your answer

Hint: You can notify a user about this post by typing @username

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

Answers Answers and Comments

7 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Script to disable MouseLook? 2 Answers

Items with Statistics(such as attack damage) that actually effect the character? 2 Answers

Help needed with a pickup script 2 Answers

Only In Range 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges