Bu yazımda Unity DOTween Kullanımı – Animasyonlar ve Efektler konusunu anlatacağım. Unity oyun motorunda güzel efektler ve güzel animasyonlar yapmak için sıkça kullanılan DOTween pluginini Asset Store’dan indirip projemize import ettikten sonra nasıl kullanıldığını göstermeye çalışacağım. Bir kaç örnek ile de görsel olarak açıklamaya çalışacağım. Umarım faydası olur.

Unity DOTween İndirme ve Kurulum
Bu işlemi Unity’nin kendi arayüzünden rahatlıkla yapabiliriz. DOTween kullanacağınız projenizi Unity ile açıp sonrasında Unity içindeki Asset Store’a girin. Ctrl + 9 kısayolu ile açabilirsiniz veya yukarıda bulunan Window sekmesinin altında da bulabilirsiniz. Açtıktan sonra gelen ekranda arama kısmına DOTween yazıyoruz. DOTween’in ücretli ve ücretsiz olmak üzere 2 farklı versiyonu mevcuttur. Biz ücretsiz olan versiyonu indiriyoruz. İndirme işlemi bittikten sonra gelen import butonuna basarak da projemize import ediyoruz. Altta resimlerini verdim bakarak da yapabilirsiniz.




Bu kadar basit artık DOTween pluginini kullanabiliriz.
Unity DOTween Kullanımı
DOTween pluginini kullanmamız için öncelikle C# scriptimizin içinde kullanacağımızı belirtmemiz gerekiyor. Yani DOTween pluginini kullanacağınız scriptin başına using DG.Tweening;
yazmamız gerekiyor. Yani bu plugini kullanacağımızı önceden scripte söylememiz gerekiyor. Bundan sonra kodumuzu yazmaya başlayabiliriz.
Ben örnek olarak 5-6 tane kullanımını göstereceğim. Ama bununla ilgili çok fazla Animasyon ve efekt var hepsine bakmak isterseniz DOTween dokümantasyonuna bakabilirsiniz.
Öncelikle animasyon ekleyeceğimiz objeyi kod içine almamız lazım bunun için de kodumuza
public GameObject gameobject;
yazıyoruz.
Public olarak tanımlıyoruz çünkü Unity’de Inspector ekranından erişmemiz gerekiyor. Eğer public olarak tanımlamak istemezseniz.
[SerializeField]
private GameObject gameobject;
olarak da tanımlayabilirsiniz. Kırmızı olarak yazdığım şey değişken adıdır siz oraya istediğinizi yazabilirsiniz.
Örnek 1
gameobject.GetComponent<RectTransform>().DOScale(1, 2f);
Yukarıdaki kod gameobject‘in RectTransform değerlerinden Scale değerine ulaşıp 2 saniyede Scale değerlerini 1 yapıyor.
DOScale(değiştirileceğiDeğer, kacSaniyeIcindeOlsun) Yani DOScale içindeki ilk değer Scale değerinin ulaşacağı değeri veriyor. İkinci değer ise o değere kaç saniyede ulaşacağını veriyor. Bunu deneyerek çok rahat anlayabilirsiniz. Kodu çalıştırarak aşağıda gösterdiğim Scale değerlerinin nasıl değiştiğini görebilirsiniz.

Örnek 2
gameObject.GetComponent<RectTransform>().DOScale(1, 1f).SetEase(Ease.OutBack);
Yukarıdaki kod da bir önceki kodun hemen hemen aynısı sadece ekstra olarak SetEase eklenmiş. SetEase’in birden fazla kullanımı vardır. Buradaki Ease.OutBack objenin arkadan öne doğru gelirmiş gibi görünmesini sağlar. Özet olarak Scale değerimiz 1 saniye içinde 1 değerine ulaşır ve aynı zamanda ekranın içinde geliyormuş gibi bir görüntü oluşturur.
Örnek 3
gameobject.GetComponent<RectTransform>().DOScale(0f, 1f).SetEase(Ease.InBack);
Buradaki kodda ise gördüğünüz gibi Scale değerimizi 0 yapıyoruz. Yani git gide görünürlüğünü azaltıp sonra tamamen kaybediyoruz ve bunu 1 saniye içinde yapıyoruz. SetEase(Ease.InBack); ise SetEase(Ease.OutBack); in tam tersi olarak objenin ekranın içine doğru gidiyormuş görüntüsü verir. Kodları deneyerek dediklerimi çok rahat anlayabilirsiniz.
Örnek 4
gameobject.GetComponent<CanvasGroup>().DOFade(0f, 1f);
Yukarıdaki kod ise objenin CanvasGroup özelliğinin içindeki Alpha değerini değiştirir. Kodda da aynı şekilde 1 saniyede Alpha değerini 0 yapar. Eğer objenizin CanvasGroup özelliği yoksa Add Component butonundan arayarak ekleyebilirsiniz.

Örnek 5
gameobject.GetComponent<RectTransform>().DOLocalMoveY(-55, 2f);
Yukarıdaki kodda ise objeyi 2 saniyede bulunduğu noktadan Y ekseninde -55 noktasına hareket ettirir. Burada DOLocalMoveY, DOLocalMoveX ve DOLocalMoveZ özelliklerini de kullanarak X, Y, Z eksenindeki konumlarını da değiştirebilirsiniz.
Örnek 6
using UnityEngine; using DG.Tweening; public class sinif : MonoBehaviour { bool tekrar = true; void Update() { if (tekrar) { StartCoroutine(BallUp()); tekrar = false; } } IEnumerator BallUp() { transform.DOKill(true); transform.DOPunchScale(new Vector3(0.1f, 0.1f, 0.1f), 1f, 5, 0.5f); yield return new WaitForSeconds(5f); tekrar = true; } }
Buradaki kod bloğunun ne yaptığını açıklamayacağım. Kopyalayıp bir scripte yapıştırın o scripti de bir objeninin içinde direk kullandığınız zaman çalışacaktır.
Umarım işinize yaramış ve faydalı olmuştur.
İyi kodlamalar.
Unity Matemetik Metotları yazımı da okuyabilirsiniz.
Selamlar ve anlatım için teşekkürler. DOTween ile yeni tanıştım acaba pro versiyonunu satın almalı mıyım yoksa ücretsiz versiyon günlük kullanımda işimi görür mü? Hani malum bazı assetlerin ücretsiz sürümü çok fazla kısıtlanmış, sample gibi oluyor ya o yüzden sormak istedim.
Merhaba yazının işine yaradığına sevindim. Bence ücretsiz sürümü günlük kullanımda işini çok rahat görür. Pro versiyonu biraz daha profesyoneller için haliyle kodlar biraz daha karmaşık hale geliyor. İlk kullanımda ücretsiz sürümü kullanıp yeterli gelmez ise pro versiyonuna geçebilirsin. Bu arada da kullanım tecrübesi edinmiş olursun.