球状に 2 つのベクトル間を補間します
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
.
パラメーター 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.