Unity

Unity Programında Lerp Metodu

İki nokta arasında nesnelerin yumuşak geçiş yaparak hareket etmesi için Lerp metodu kullanılır. Bu metodu hem Mathf ve Vektor3 ifadeleriyle kullanabilirsiniz. Nesnenin başlangıç noktasından bitiş noktasına yumuşak bir geçiş yapmasını sağlar.

3D bir uygulama oluşturalım. Sahneye boş bir nesne ekleyelim. İsmini AnimManager yapalım. Scripts isminde bir klasör oluşturalım. Bunun altında Animasyon isminde bir script dosyası oluşturalım. Bu dosyayı boş nesneye ekleyelim.

    float start = 0;
    float end = 100;
    float lerpPercent = 0.5f;
    private void Start()
    {
        print(Mathf.Lerp(start, end, lerpPercent));
    }

Kodu çalıştırdığınızda console ekranında 50 değerini görürsünüz. Halbuki biz yumuşak bir geçiş yapmak istiyoruz. Burada Start fonksiyonunu silelim ve sıfırdan yüze yumuşak geçişi görmek için Update fonksiyonuyla işlemleri gerçekleştirelim.

    private void Update()
    {
        lerpPercent = Time.deltaTime;
        print(Mathf.Lerp(start, end, lerpPercent));
    }
Kodu çalıştırdığımızda sona doğru değerlerin küçülerek yükseldiğini görürsünüz. Şimdi bu animasyon işlemini bir nesne üzerinde gerçekleştirelim. Ben projeye bir cube ekliyorum. Sahneye startPos ve endPos isminde iki tane boş nesne ekleyelim. Animasyon.cs isimli script dosyasını resim dosyasına ekleyelim. Şimdi işlemlerimizi vektörler üzerinde yapalım. Nesneyi a noktasından b noktasına hareket ettirelim.
    public Transform startPos, endPos;
    float startTime;
    float totalDistanceToDestination;

    private void Start()
    {
        transform.position = startPos.position;
        startTime = Time.time;
        totalDistanceToDestination = Vector3.Distance(startPos.position, endPos.position);
    }

    private void Update()
    {
        float currnetDuration = Time.time - startTime;
        float journeyFraction = currnetDuration / totalDistanceToDestination;

        transform.position = Vector3.Lerp(startPos.position, endPos.position, journeyFraction);
    }

Kodları yazdıktan sonra cube nesnesine ait iki adet vektör belirir. startPos vektörü için startPos nesnesini, endPos vektörü içim endPos nesnesini parametre olarak ekleyelim. startPos nesnesini seçelim ve transform özelliklerinden reset diyerek sahnenin ortasına alalım. Bu nesne bizim resmimizin bağlangıç noktası olacaktır. Bu nesneye ait bir resim ekleyerek nesnenin yerini görebiliriz. Bunun için inspector panelinde yer alan küp simgesine tıklayarak bu nesne için bir klavuz resmi oluşturabiliriz. Aynı işlemi endPos nesnesi için yapalım. startPos nesnesinin konumunu (-10, 0, 0) yapalım. endPos nesnesinin konumunu (10, 0, 0) yapalım. Nesnemiz bu iki nokta arasında gidecektir.

Artık projemizi çalıştırabiliriz. Animasyonun hızlı akmasını istiyorsak journeyFraction değerini 3.0f değeriyle çarpabiliriz.


Etiketler
unity oyun c# animasyon 
İlgili Makaleler
Bilgisayarlı Tasarım Uygulamaları Dersi İkinci Dönem İkinci Yazılı Çalışma Soruları
Bilgisayarlı Tasarım Uygulamaları Dersi İkinci Dönem Birinci Yazılı Çalışma Soruları
Unity Programında Button Yardımıyla Sahneler Arasında Geçiş Yapma İşlemleri
Unity Programında Mouse Hareketlerine Göre Kamera Açısını Ayarlama
Unity Programında Sprite İle 2D Animasyon Yapmak
Unity Programında Material Kullanımı
Unity Programında Bir Nesneyi Kodlarla Döndürme İşlemi
Unity Programında Input Get Axis Komutu
Unity Programında Puzzle Oyunu Nasıl Yapılır
Unity Programında Basit Login Yapımı
Unity Programında Prefabs Nesnelerini Kodla Çoğaltma
Unity Programında Kodlarla Sahneye Nesne Ekleme
Unity Projesinde Sql Server Veri Tabanına Bağlanma
Unity Programında Inspector Ve Console Paneli
İki Sayıyı Toplayan İşlemi Unity Programında Kodlayarak Yapınız
Terrain Nedir? Ne İşe Yarar?
Unity Programında Input GetKey Komutu
Unity Programında Topu Hareket Ettirme Oyunu Kamera Takibini Gerçekleştiriyoruz
Unity Programında Script Editörünü Ayarlama
Unity Programında Scene Ve Game Paneli

Yorum Ekle
   
Kötü İyi