Vector3.Lerp

Deklarasyon

public static Vector3 Lerp(Vector3 aVector3 b, float t);


Parametreler

a Başlangıç değeri, t = 0 olduğunda döner.
bBitiş değeri, t = 1 olduğunda döner.
ta ve b arasında enterpolasyon yapmak için kullanılan değer.

Dönüş Değeri

Vector3 enterpolasyonlu değeri döndürür, a + (b - a) * t'ye eşittir.

Açıklama

İki nokta arasında doğrusal enterpolasyon yapar.

a ve b noktaları arasında t enterpolantı ile enterpolasyon yapar. t parametresi [0, 1] aralığına sıkıştırılır. Bu, genellikle iki uç nokta arasındaki bir çizgi boyunca bir noktayı belirli bir kesir oranında bulmak için kullanılır (örneğin, bir nesneyi bu noktalar arasında kademeli olarak hareket ettirmek için).

Dönen değer a + (b - a) * t'ye eşittir (bu, a * (1-t) + b * t olarak da yazılabilir).
t = 0 olduğunda, Vector3.Lerp(a, b, t) a'yı döndürür.
t = 1 olduğunda, Vector3.Lerp(a, b, t) b'yi döndürür.
t = 0.5 olduğunda, Vector3.Lerp(a, b, t) a ve b'nin tam ortasındaki noktayı döndürür.

// Vector3.Lerp kullanımına kısa bir örnek.
// Bunu sahnenizdeki bir nesneye ekleyin ve Oyun zamanında, sahne merkezi ile iki diğer pozisyon arasında (biri yukarı ekseninde, diğeri ileri ekseninde) enterpolasyon yapılmış bir pozisyon arasında küçük bir sarı çizgi çizecektir.

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    public int interpolationFramesCount = 45; // 2 pozisyon arasında tamamen enterpolasyon yapmak için gereken kare sayısı
    int elapsedFrames = 0;

    void Update()
    {
        float interpolationRatio = (float)elapsedFrames / interpolationFramesCount;

        Vector3 interpolatedPosition = Vector3.Lerp(Vector3.zero, Vector3.forward, interpolationRatio);

        elapsedFrames = (elapsedFrames + 1) % (interpolationFramesCount + 1); // elapsedFrames, (interpolationFramesCount + 1)'e ulaştığında sıfırlayın

        Debug.DrawLine(Vector3.zero, Vector3.up, Color.green);
        Debug.DrawLine(Vector3.zero, Vector3.forward, Color.blue);
        Debug.DrawLine(Vector3.zero, interpolatedPosition, Color.yellow);
    }
}


// Vector3.Lerp kullanımına daha uzun bir örnek.
// Bu komut dosyasını sahnenizdeki bir nesneye bırakın ve komut dosyasındaki "startMarker"/"endMarker" değişkenlerine 2 başka nesne belirtin.
// Oyun zamanında, komut dosyası bu iki işaretçinin pozisyonu arasında bir yol boyunca nesneyi hareket ettirecektir.
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { // Yolculuk için başlangıç ve bitiş işaretçileri olarak hareket edecek Transformlar. public Transform startMarker; public Transform endMarker; // Hareket hızı birim/saniye. public float speed = 1.0F; // Hareketin başladığı zaman. private float startTime; // İşaretçiler arasındaki toplam mesafe. private float journeyLength; void Start() { // Hareketin başladığı zamanı not edin. startTime = Time.time; // Yolculuk uzunluğunu hesaplayın. journeyLength = Vector3.Distance(startMarker.position, endMarker.position); } // Hedef bitiş pozisyonuna hareket edin. void Update() { // Hareket edilen mesafe, geçen zaman çarpı hızına eşittir. float distCovered = (Time.time - startTime) * speed; // Yolculuğun tamamlanan kısmı, mevcut mesafenin toplam mesafeye bölünmesine eşittir. float fractionOfJourney = distCovered / journeyLength; // Pozisyonumuzu işaretçiler arasındaki mesafenin bir kesiri olarak ayarlayın. transform.position = Vector3.Lerp(startMarker.position, endMarker.position, fractionOfJourney); } }


Ek kaynaklar: Slerp, LerpUnclamped.


Bu blog Unity Docs'un Türkçeye çevrilmiş halidir.

Yorumlar

Bu blogdaki popüler yayınlar

Important Classes - Vectors

RequireComponent

Important Classes - GameObject