- Home /
Disable/enable script and animation when you move your mouse cursor
Hello everyone. I have 2 scripts(Orbit, enable_disable_script) and an animation attached to my main camera and my camera is orbiting around an object. I am trying to make a script(enable_disable_script) that would disable another script(Orbit) in the same object when mouse cursor moves and at the same time play the animation, and when the cursor stops moving - enable_disable_script would start counting time, Orbit script would re-enable itself and an animation would stop. Here is my script so far.
 #pragma strict
 
 var script : Transform;
  
 function Start() {
 animation.Play();
  script.GetComponent(Orbit).enabled = false;
 }
 
 function Update() {
     if(Input.GetAxis("Mouse X")||Input.GetAxis("Mouse Y")){
     //Code for action on mouse moving x
     script.GetComponent(Orbit).enabled = true;
     animation.Stop();
     print("Mouse moved x or y");
       Wait();
     }
 }
 
 function Wait() {
 yield WaitForSeconds(2);
 animation.Play();
 script.GetComponent(Orbit).enabled = false;
 }
I have 2 problems. The first one is that I want the script to start counting time only when I stop moving the cursor, but I can't understand how to do that. The second one is that when I orbit around an object with my main camera fast then the Orbit script and animation enables/disables randomly, not after 2 seconds. I hope you undersand what I said. Thank you for help.
Answer by dorpeleg · Mar 24, 2013 at 11:19 PM
Put your Wait() function under else statement like so:
 function Update() {
     if(Input.GetAxis("Mouse X")||Input.GetAxis("Mouse Y")){
     //Code for action on mouse moving x
     script.GetComponent(Orbit).enabled = true;
     animation.Stop();
     print("Mouse moved x or y");
     }else{
      Wait();
     }
 }
I think it might fix both problems.
Hmmmm... The code still randomly plays the animation and orbits around :(
Try not using WaitForSeconds().
Try something like this:
         function Wait() {
       curWaitTime += Time.deltaTime;
       if (curHealTime >= 2){
             animation.Play();
             script.GetComponent(Orbit).enabled = false;
             curWaitTime = 0;
           }
         }
$$anonymous$$ight work.
Thank you so much! I modified your code a bit and now it's working as it's supposed to! Here is the final code:
 #pragma strict
 
 var curWaitTime : float;
 var script : Transform;
  
 function Start() {
 animation.Play();
  script.GetComponent(Orbit).enabled = false;
 }
 
     function Update() {
     if(Input.GetAxis("$$anonymous$$ouse X")||Input.GetAxis("$$anonymous$$ouse Y")){
     //Code for action on mouse moving x y
         curWaitTime = 0;
     script.GetComponent(Orbit).enabled = true;
     animation.Stop();
     print("$$anonymous$$ouse moved x or y");
     }else{
     Wait();
     }
     }
 
      function Wait() {
     curWaitTime += Time.deltaTime;
     if (curWaitTime >= 15){
     animation.Play();
     script.GetComponent(Orbit).enabled = false;
     curWaitTime = 0;
     }
   }
Your answer
 
 
             Follow this Question
Related Questions
Lock mouse position with a Rect, possible? 1 Answer
Get position of mouse aim to world? 1 Answer
Mouse won't freeze in center of screen 1 Answer
Getting Cursor position problem 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                