Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

Vector3.Slerp

Предложить изменения

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство
public static function Slerp(a: Vector3, b: Vector3, t: float): Vector3;
public static Vector3 Slerp(Vector3 a, Vector3 b, float t);

Параметры

Описание

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].

	// Animates the position in an arc between sunrise and sunset.
	
	var sunrise : Transform;
	var sunset : Transform;
	
	// Time to move from sunrise to sunset position, in seconds.
	var journeyTime = 1.0;
	
	// The time at which the animation started.
	private var startTime: float;
	
	
	function Start() {
		// Note the time at the start of the animation.
		startTime = Time.time;
	}
	
	
	function Update () {
	    // The center of the arc
	    var center = (sunrise.position + sunset.position) * 0.5;
	    // move the center a bit downwards to make the arc vertical
	    center -= Vector3(0,1,0);
	
	    // Interpolate over the arc relative to center
	    var riseRelCenter = sunrise.position - center;
	    var setRelCenter = sunset.position - center;
	    
	    // The fraction of the animation that has happened so far is
	    // equal to the elapsed time divided by the desired time for
	    // the total journey.
	    var fracComplete = (Time.time - startTime) / journeyTime;
	    transform.position = Vector3.Slerp(riseRelCenter, setRelCenter, fracComplete);
	    transform.position += center;
	}
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.