I’m trying to make script where I can move a object accurately between 4 locations. I’ve decided to use Vector3.Lerp however I can’t seem to make it transition between one larp to another. I’ve posted the code bellow. when I’ve got this working I’m hoping to build upon the script and build something similar to the opening scene of the Ocarina of Time or the ending of Portal.
Hope you can fix this thanks!
Code:
#pragma strict
var start : Transform;
var check1 : Transform;
var check2 : Transform;
var check3 : Transform;
var i = 1;
function Update() {
var smooth = 2.0;
if(i == 1){
transform.position = Vector3.Lerp(check1.position, check2.position, Time.deltaTime * smooth);
if(transform.position == check1.position ){
i++;
}
}
if(i == 2){
transform.position = Vector3.Lerp(check1.position, check2.position, Time.deltaTime * smooth);
if(transform.position == check2.position){
i++;
}
}
if(i == 3){
transform.position = Vector3.Lerp(check2.position, check3.position, Time.deltaTime * smooth);
if(transform.position == check3.position){
i++;
}
}
if(i == 4){
transform.position = Vector3.Lerp(check3.position, start.position, Time.deltaTime * smooth);
if(transform.position == start.position){
i = 1;
}
}
}
Wolfram
2
I strongly suggest to use iTween instead! You can directly animate towards any target point, and also apply easeIn/easeOut, and more.
Also, you have a copy&paste bug in line 12, it probably should lerp between start and check1. (EDIT: which is the reason your transition doesn’t work)
FL
3
Instead of if(transform.position == start.position) use something like if(Vector3.Distance(a,b)< minDistance). Where minDistance is a small number like 0.1.
I’m not sure, but Vector3.Lerp never make the distance exactly like the second parameter, unless that the third parameter is 1.