Spherically interpolates between two vectors.
Interpolates between a
and b
by amount t
. The difference between this and linear
interpolation (aka, "lerp") is that the vectors are treated as directions rather than points
in space. The direction of the returned vector is interpolated by the angle and its
magnitude is interpolated between the magnitudes of from
and to
.
The parameter t
is clamped to the range [0, 1].
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public Transform sunrise; public Transform sunset; public float journeyTime = 1.0F; private float startTime; void Start() { startTime = Time.time; } void Update() { Vector3 center = (sunrise.position + sunset.position) * 0.5F; center -= new Vector3(0, 1, 0); Vector3 riseRelCenter = sunrise.position - center; Vector3 setRelCenter = sunset.position - center; float fracComplete = (Time.time - startTime) / journeyTime; transform.position = Vector3.Slerp(riseRelCenter, setRelCenter, fracComplete); transform.position += center; } }
See Also: Lerp, SlerpUnclamped.