Unity’de Animator.SetFloat() Metodu ile Animasyonları Kontrol Etme

Unity'de Animator.SetFloat() metodu ile animasyonlarınızı parametrelere bağlı olarak nasıl kontrol edeceğinizi öğrenin. Bu detaylı rehber, örneklerle adım adım anlatım sunar ve animasyon sistemini ustalaştırmanıza yardımcı olur. C# scriptleri ve pratik uygulamalarla dolu!

Unity’de Animator.SetFloat() Metodu ile Animasyonları Kontrol Etme

Unity oyun motorunda animasyonları kontrol etmenin en güçlü yollarından biri, Animator.SetFloat() metodudur. Bu metod, animasyonlarınızı çeşitli parametrelere bağlı olarak dinamik olarak değiştirmenize olanak tanır. Bu rehberde, Animator.SetFloat() metodunu detaylı bir şekilde ele alacak, kullanımını örneklerle açıklayacak ve animasyon sisteminizi bir üst seviyeye taşımanıza yardımcı olacağız.

Animator.SetFloat() Metodunun Temelleri

Animator.SetFloat() metodu, animasyon denetleyicisine (Animator) bir float değer gönderir. Bu float değer, animasyon kliplerinin karışımını (blending) kontrol eden animasyon parametrelerine atanır. Örneğin, bir karakterin yürüme animasyonunun hızını kontrol etmek için bir “Speed” parametresi kullanabilir ve bu parametreye farklı float değerler göndererek yürüme hızını değiştirebilirsiniz.

Animasyon Parametrelerinin Oluşturulması

Animator.SetFloat() metodunu kullanmadan önce, animasyon denetleyicinizde bir animasyon parametresi oluşturmanız gerekir. Bunu Animator penceresinde (Window > Animation > Animator) yapabilirsiniz. “Create” butonuna tıklayarak yeni bir parametre ekleyin ve “Float” tipini seçin. Parametreye anlamlı bir isim verin (örneğin, “Speed”, “Health”, “Jump”).

Animator.SetFloat() Metodunun Kullanımı

Animator.SetFloat() metodu şu şekilde kullanılır:

animator.SetFloat("ParameterName", floatValue);

Burada:

  • animator: Animasyon denetleyicisine referans.
  • “ParameterName”: Oluşturduğunuz animasyon parametresinin adı (tırnak içinde).
  • floatValue: Parametreye gönderilecek float değer.

Örnek olarak, “Speed” adlı bir parametreye 1.0f değerini göndermek için şu kodu kullanabilirsiniz:

animator.SetFloat("Speed", 1.0f);

Bu kod, karakterinizin hızlı bir şekilde yürümesini sağlayacaktır. 0.0f değerini gönderirseniz, karakteriniz hareketsiz kalır. 0.5f gibi ara değerler ise yürüyüş hızını kademeli olarak değiştirir.

Örnek Senaryo: Karakter Hareketleri

Bir karakterin hareketlerini kontrol etmek için Animator.SetFloat() metodunu nasıl kullanabileceğimize dair bir örnek inceleyelim. Karakterin yürüme, koşma ve atlama animasyonlarını farklı hızlarda oynatmak istiyoruz.

Öncelikle, Animator penceresinde “Speed” ve “Jump” adlı iki float parametresi oluşturuyoruz. Sonra, C# script’imizde şu kodu yazıyoruz:

using UnityEngine;

public class CharacterController : MonoBehaviour
{
    public Animator animator;

    void Update()
    {
        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");

        float speed = Mathf.Clamp01(new Vector2(horizontalInput, verticalInput).magnitude);
        animator.SetFloat("Speed", speed);


        if (Input.GetButtonDown("Jump"))
        {
            animator.SetFloat("Jump", 1.0f);
        }
        else
        {
            animator.SetFloat("Jump", 0.0f);
        }
    }
}

Bu kod, yatay ve dikey girişleri alarak karakterin hızını hesaplıyor ve “Speed” parametresine gönderiyor. Atlama tuşuna basıldığında ise “Jump” parametresine 1.0f değeri gönderiliyor, aksi takdirde 0.0f gönderiliyor. Animasyon klipleriniz bu parametrelere göre ayarlanmalıdır.

Animasyon Blend Tree’leri ile Gelişmiş Kontrol

Animasyonları daha incelikli kontrol etmek için Blend Tree’ler kullanabilirsiniz. Blend Tree’ler, farklı animasyon kliplerini parametrelere bağlı olarak karıştırarak daha akıcı geçişler sağlar. Örneğin, “Speed” parametresine bağlı olarak farklı yürüme hızlarını bir Blend Tree ile karıştırabilirsiniz.

Animator.SetFloat() Metodunun Parametreleri

Animator.SetFloat() metodu, isteğe bağlı olarak bir dampingTime ve deltaTime parametresi de alabilir. DampingTime, parametre değerinin değişiminin yumuşaklığını kontrol ederken, deltaTime, animasyonun zamanlamasını kontrol etmeye yardımcı olur. Bu parametreleri kullanarak animasyonlarda daha doğal ve akıcı geçişler elde edebilirsiniz.

animator.SetFloat("Speed", speed, dampingTime, deltaTime);

Bu kod, “Speed” parametresinin değerini dampingTime ve deltaTime parametrelerine göre yumuşak bir şekilde değiştirir.

Sonuç

Animator.SetFloat() metodu, Unity’de animasyonları dinamik ve etkileşimli bir şekilde kontrol etmenin güçlü bir yoludur. Bu rehberde öğrendiğiniz bilgilerle, oyunlarınızda daha gerçekçi ve etkileyici animasyonlar oluşturabilirsiniz.

 

Unutmayın ki, animasyon sistemini tam anlamıyla anlamak ve ustalaşmak için bolca pratik yapmanız gerekmektedir.