Unity Mecanim Tuşa Basıldığında Animasyon Nasıl Oynatılır
Mecanim, geliştiricilere gelişmiş animasyon kontrolü ve zengin özelliklere sahip bir düzenleyici sağlayan Unity için durum odaklı bir araçtır.
Mecanim'in öne çıkan özellikleri animasyon harmanlama ve animasyon yeniden hedeflemedir.
Animasyon karıştırma, animasyonlar arasında yumuşak geçişler yapmaya yönelik otomatik bir işlemdir.
Animasyon yeniden hedefleme, her yeni karakter için yeni animasyonlar oluşturma ihtiyacını ortadan kaldırarak, mevcut animasyonların birden fazla karakter donanımı arasında çalışacak şekilde yeniden tasarlanması sürecidir.
Bu derste, Mecanim ile bir Küpün nasıl canlandırılacağını ve Tuşa Basıldığında Animasyonun nasıl oynatılacağını göstereceğim.
Adımlar
Unity'de bir Küpü canlandırmak için aşağıdaki adımları izleyin:
- Yeni Küp oluştur (GameObject -> 3D Nesne -> Küp)
- Küp'ü seçin ve ardından Animasyon penceresini açın (Pencere -> Animasyon -> Animasyon)
- Animasyon penceresinde "Create"'e tıklayın; bu, yeni bir animasyon, yeni bir Animatör Denetleyicisi oluşturacak ve Küp'e bir Animatör bileşeni ekleyecektir.
- Yeni animasyona ad verin "SpinAnimation"
- Animasyon Penceresinde AddProperty -> Transform -> Rotation'a tıklayın.
- Bu animasyon başlangıç ve bitiş olmak üzere 2 kareden oluşacaktır.
- İlk kare için döndürmeyi (0, 0, 0) olarak ayarladık
- Son kare için döndürmeyi (0, 360, 0) olarak ayarladık.
Animasyon hazır.
İpucu: Daha fazla animasyon oluşturmak için Animasyon penceresinde animasyon adına tıklayın ve ardından "Create new Clip..." seçeneğine tıklayın.
Mecanim Animator Controller'ı kurmak için aşağıdaki adımları izleyin:
- Animasyonla oluşturulan Animator Controller varlığına çift tıklayın
- "Animator" başlıklı yeni bir pencere açılacaktır; bu pencere şuna benzemelidir:
- "Entry"'ten "SpinAnimation"'ya doğru işaret eden bir ok olduğunu fark edeceksiniz, bu da animasyonun Sahne başlar başlamaz oynatılacağı anlamına gelir, ancak istediğimiz bu değil, animasyonu yalnızca tuşa basıldığında oynatmak istiyoruz.
Mecanim'in bir giriş animasyonu olması gerektiğinden yapabileceğimiz şey yeni bir Boş durum oluşturmak ve onu bir Giriş haline getirmektir:
- Animatör penceresine sağ tıklayın -> Durum Oluştur -> Boşalt:
- Giriş durumunu seçin -> Üzerine sağ tıklayın -> StateMachine Varsayılan Durumunu Ayarla, ardından "New State": üzerine gelin
Yapılacak son şey SpinAnimation'a geçiş yapmaktır, ancak geçişi yalnızca belirli koşul karşılandığında yapmak istiyoruz, işte o zaman Parametreler Sekmesi devreye girer:
- Animatör penceresinde Parametreler sekmesine ve ardından (+) sembolüne tıklayın:
Birden fazla türün mevcut olduğunu fark edeceksiniz, ancak şimdilik Trigger'yi seçeceğiz, bool'a benzer ancak bool'dan farklı olarak, animasyon tamamlandığında kendisini otomatik olarak false değerine ayarlar, tek seferlik animasyonlar için kullanışlıdır:
- Parametreyi adlandırın "spinTrigger"
- Son olarak "Any State"'i seçin -> Üzerine Sağ Tıklayın -> Geçiş Yap, ardından SpinAnimation'ın üzerine gelin:
- Geçiş Okuna tıklayın ve Koşullar altındaki Denetçi Görünümünde (+) öğesine tıklayın ve spinTrigger parametresinin seçildiğinden emin olun.
- Varsayılan olarak Unity ile oluşturulan animasyonlarda döngü etkindir, ancak Animasyonu yalnızca bir kez oynatmak istediğimiz için yapmamız gereken, Proje görünümünde Animasyon Klibi'ni seçip Döngü Süresi onay kutusunun işaretini kaldırmaktır:
Mecanim parametrelerini bir komut dosyasından kontrol edebilmek için özel işlevleri kullanmamız gerekecek, aşağıdaki kodu kontrol edin:
- Yeni bir komut dosyası oluşturun, onu "AnimationTest" olarak adlandırın, içindeki her şeyi kaldırın ve ardından aşağıdaki kodu içine yapıştırın:
AnimasyonTest.cs
using UnityEngine;
public class AnimationTest : MonoBehaviour
{
Animator animator;
// Start is called before the first frame update
void Start()
{
//Get Animator component
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
//Play spin animation on key press
if (Input.GetKeyDown(KeyCode.Q))
{
animator.SetTrigger("spinTrigger");
}
}
}
- AnimationTest.cs betiğini Animator bileşeniyle Cube'a ekleyin:
Şimdi test edelim:
Her şey beklendiği gibi çalışıyor; Q tuşuna basıldığında animasyon oynatılıyor.