- 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