Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

Vector3.Slerp

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public static function Slerp(a: Vector3, b: Vector3, t: float): Vector3;
public static Vector3 Slerp(Vector3 a, Vector3 b, float t);

パラメーター

説明

球状に 2 つのベクトル間を補間します

tab の間を補間します。この関数と、直線で補間する (別名 "leap")の違いは、ベクトルは方向としてではなく、空間の位置として扱われることです。 返されたベクトルの方向は角度によって補間され magnitudefromto の大きさの間で補間されます。

値は [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.