Not like yield animationState;. Yield isn't a Unity specific keyword and it requires that you return an IEnumerator. Vector3.Lerp() returns a Vector3, but you could run the loop until its completed and wait for the result, but then you would have to move some stuff out of Update(). It would be easier if you were using a finite state machine, but it isn't necessary.
var isLerping : boolean = false;
function Update () {
if(/*conditions arise that call for your camera to loop*/) {
LerpCamera(startPos, endPos);
}
if(!isLerping) {
}
}
function LerpCamera (start : Vector3, end : Vector3) : IEnumerator {
var i : float = 0;
isLerping = true;
while(i < 1) {
camera.transform.position = Vector3.Lerp(start, end, i);
i += Time.deltaTime;
yield;
}
isLerping = false;
//You can put more commands here that will be execute after the Lerp is finished. Like you yielded the completion.
}
You can continue your code from wherever you want, I would either go after you finish the loop, or you can put it in Update somewhere. Start() with an infinity loop made into an FSM would probably be easiest because then you can yield the whole function then you won't even need a bool check.
answered
May 07 '11 at 11:11 AM
Peter G
15k
●
16
●
44
●
136