在两个向量之间进行球形插值。
在 a
和 b
之间按大小 t
进行插值。
球形插值与线性插值(也称为“lerp”)的区别在于,
向量被视为方向而不是空间中的点。返回的向量的方向通过角度进行插值,
其 magnitude 在 from
和 to
的大小之间进行插值。
参数 t
限制在范围 [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;
}
}
另请参阅:Lerp、SlerpUnclamped。