Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity'de Mathf.Lerp() ile Değerler Arasında Akıcı Geçişler

Paylaşan: Unity Eğitim 16 September 2025 3 dakika okuma 142 görüntülenme

Merhaba Unity geliştiricileri! Bu yazıda, Unity oyun motorunda sıkça kullanılan ve animasyonlar, hareketler ve daha birçok işlemde büyük kolaylık sağlayan Mathf.Lerp() fonksiyonunu detaylı bir şekilde inceleyeceğiz. Mathf.Lerp(), iki değer arasında lineer interpolasyon yaparak, belirli bir sürede bir değerden diğerine akıcı bir geçiş sağlar.

Mathf.Lerp() Nedir?


Mathf.Lerp() (Lineer Interpolasyon), iki değer arasında belirli bir oran (% olarak düşünebilirsiniz) üzerinden yeni bir değer hesaplar. Bu oran, 0 ile 1 arasında değişir. 0, ilk değeri; 1, ikinci değeri; 0 ile 1 arasındaki değerler ise iki değer arasında bir noktayı temsil eder.

Fonksiyonun Yapısı


Mathf.Lerp() fonksiyonunun yapısı şu şekildedir:
public static float Lerp(float a, float b, float t);


  • a: Başlangıç değeri.

  • b: Bitiş değeri.

  • t: 0 ile 1 arasında değişen bir oran. 0 ise 'a' değerini, 1 ise 'b' değerini, diğer değerler ise 'a' ve 'b' arasında bir noktayı verir.


Fonksiyon, a + (b - a) * t formülüne göre çalışır.

Mathf.Lerp() Örnekleri


Örnek 1: Bir Objeyi Belirli Bir Noktaya Taşıma


Bu örnekte, bir oyun objesini belirli bir noktaya Mathf.Lerp() kullanarak zaman içinde hareket ettireceğiz. Her Update() çağrısında, objenin konumunu yeni bir konuma doğru yaklaştıracağız.
using UnityEngine;

public class LerpMovement : MonoBehaviour
{
public Transform target;
public float speed = 5f;

void Update()
{
float step = speed * Time.deltaTime;
transform.position = Vector3.Lerp(transform.position, target.position, step);
}
}


Bu kodda, target değişkeni hedef konumu temsil eder. speed değişkeni ise hareket hızını kontrol eder. Time.deltaTime, her kare arasındaki zaman farkını kullanarak hareketin kare hızından bağımsız olmasını sağlar.

Örnek 2: Renk Değişimi


Mathf.Lerp() sadece konum için değil, renk gibi diğer değerler için de kullanılabilir. Örneğin, bir objenin rengini zaman içinde bir renkten diğerine değiştirebiliriz:
using UnityEngine;

public class LerpColor : MonoBehaviour
{
public Color startColor = Color.red;
public Color endColor = Color.blue;
public float speed = 2f;
private Renderer rend;

void Start()
{
rend = GetComponent<Renderer>();
}

void Update()
{
float t = Mathf.Clamp01(Time.time * speed);
rend.material.color = Color.Lerp(startColor, endColor, t);
}
}


Bu örnekte, Mathf.Clamp01() fonksiyonu, t değerini 0 ile 1 arasında tutar, böylece renk değişimi düzgün bir şekilde gerçekleşir.

İleri Teknikler


Mathf.Lerp() fonksiyonunu daha karmaşık animasyonlar ve efektler oluşturmak için kullanabilirsiniz. Örneğin, Mathf.SmoothStep() fonksiyonu ile daha akıcı bir geçiş elde edebilirsiniz veya daha gelişmiş interpolasyon yöntemleri kullanabilirsiniz.

Ayrıca, Mathf.LerpUnclamped() fonksiyonu, t değerinin 0 ile 1 arasında sınırlandırılmadığı bir versiyondur. Bu fonksiyonu, t değerini daha fazla kontrol etmek istediğiniz durumlarda kullanabilirsiniz.

Sonuç


Mathf.Lerp(), Unity'de değerler arasında akıcı geçişler oluşturmak için güçlü ve kullanımı kolay bir fonksiyondur. Bu yazıda ele aldığımız örnekler ve ileri teknikler, Mathf.Lerp() fonksiyonunun yeteneklerini daha iyi anlamanıza ve oyunlarınızda kullanmanıza yardımcı olacaktır.

Unutmayın ki, bu fonksiyon lineer bir interpolasyon yapmaktadır. Eğer daha karmaşık animasyonlar gerekiyorsa, Bezier eğrileri gibi diğer interpolasyon yöntemlerini de inceleyebilirsiniz.

Umarım bu yazı faydalı olmuştur.

https://www.youtube.com/watch?v=MyVY-y_jK1I

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!