how to set a number from 0 to 1 Within three seconds in Unity3d? I want to set following code: `transform.position=Vector3.Lerp(transform.position,targetPos,i)`
Use a coroutine:
var seconds = 3.0;
var targetPos : Vector3;
function Start () {
var t = 0.0;
var rate = 1.0/seconds;
var startPos = transform.position;
while (t < 1.0) {
t += Time.deltaTime * rate;
transform.position = Vector3.Lerp(startPos, targetPos, t);
yield;
}
}
See also MoveObject.
var targetPos : Vector3;
Move(transform.position, targetPos);
function Move(start : Vector3, finish : Vector3) {
var lerp = 0.0f;
while (lerp != 1.0f) {
lerp = Mathf.MoveTowards(lerp, 1.0f, Time.deltaTime / 3.0f);
transform.position = Vector3.Lerp(start, finish, lerp);
}
}
You can accomplish this using LeanTween:
var varToChange:float;
function updateNewValue( val:float ){
varToChange = val;
Debug.Log("the tweened new value (called every frame):"+varToChange);
}
function Start(){
var from:float = 0.0;
var to:float = 1.0;
var time:float = 3.0;
var options = {};
LeanTween.value(updateNewValue, from, to, time, options);
}