I feel stupid asking this, but i’m not sure how its done.
I would like an object to rotate 180 degrees on it’s x axis after waiting 3 seconds, and then repeat. But when I use this script, it just waits three seconds on load time, then continues spinning forever. Sorry for this stupid question
function spin(){
yield WaitForSeconds(3.0);
transform.Rotate(0, 0, 180 * Time.deltaTime);
}
function Update(){
spin();
}
I guess I want the spin function to loop, but I don’t know how.
If I understand the question, what you want is to have the object finish a rotation of 180 degrees every 3 seconds? What your code is doing now is initially waiting for 1 second (your yield statement), and then spinning 180 degrees per second after that. I think what you want would look something like this.
function spin() {
transform.Rotate(0,0,60*Time.deltaTime)
}
function Update() {
spin();
}
What’s happening here is that your rotating the object 60 degrees per second (which is the same thing as saying 180 degrees every 3 seconds).
private var tCycle:float;
function Update(){
var t = Time.time;
if (t>tCycle) tCycle = t+3;
if (tCycle-t<=1){ // Spins during the last second
transform.rotate(0,0,180*Time.deltaTime);
}
}
I’m sure yield could be a better alternative, but I just can’t understand this %#@! thing!