- Home /
Trying to delay movement of a GameObject
Hi guys,
I have a scene made with NGUI where I have four panels, each with a different comic drawing. Each one has the following script attached:
var start : Transform;
var end : Transform;
var delay : float = 0;
var duration : float = 2;
private var myTransform : Transform;
private var startPoint : Vector3;
private var endPoint : Vector3;
private var startTime : float;
private var elapsedTime : float = 0;
function Start () {
myTransform = transform;
myTransform.position = start.position;
startPoint = start.position;
endPoint = end.position;
startTime = Time.time;
}
function Update () {
elapsedTime += Time.deltaTime;
if(elapsedTime >= delay)
{
myTransform.position = Vector3.Lerp(startPoint, endPoint, (Time.time - startTime) / duration);
}
}
All of the panels have the same duration of 2 seconds, with each panel having a delay of, from first through fourth, 0, 3, 6, and 9 seconds, respectively. The problem is that when their delay timers run out, they just pop randomly into their target destinations instead of transitioning smoothly from the designated starting point. Is there another way to smoothly move a GameObject from one point to another and do so with a delay?
MachCUBED
Answer by aldonaletto · Dec 07, 2012 at 02:24 AM
You should use delay instead of startTime in the last instruction:
myTransform.position = Vector3.Lerp(startPoint, endPoint, (Time.time - delay) / duration);
or assign delay to startTime at Start, so that Lerp would start at 0 when the delay finishes.
Your answer
Follow this Question
Related Questions
Problems using NGUI for in-game options sliders 0 Answers
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
How to delay a line of code. 2 Answers
Unity3D Timer. 1 Answer
Unity3D Game Time 1 Answer