Hi,
Here’s my problem; Regardless of the value of “t” argument, the function produces nearly instant 90° rotations (no smoothing)?
Quaternion or Vector3 slerp have the same behavior… (Commented in code)
The lerp part perfectly interpolates smoothly to different “t” values using the same time variables…
I tried simple floats values like “0.00001f” to try to get something very slow in there as well… same behavior
Any idea?
bool lerpOn = false;
bool slerpOn = false;
Vector3 lerpDest;
Vector3 curPos;
Transform from;
Transform to;
float startTime;
float movSpeed = 0.5f;
float rotSpeed = 0.5f;
void Update () {
if (lerpOn) {
transform.position = Vector3.Lerp (curPos, lerpDest, (Time.time - startTime) / movSpeed);
if (Vector3.Distance (Camera.main.transform.position, lerpDest) < Vector3.kEpsilon) {
lerpOn = false;
}
}
if(slerpOn){
transform.rotation = Quaternion.Slerp(from.rotation, to.rotation, (Time.time - startTime) / rotSpeed);
//transform.position = Vector3.Slerp(from.position, to.position, (Time.time - startTime) / rotSpeed);
if (Vector3.Angle (Camera.main.transform.position, to.position) < Vector3.kEpsilon ){
slerpOn = false;
}
}
}