Sahne ekranına gidin ve oynatıcınızı seçin. Animasyon penceresini açın. Animasyonu başlatmak için bir animatöre ve bir animasyon klibine ihtiyacınız vardır.
Oynatıcıyı seçin ve Pencere altında Animasyon -> Animasyon'a gidin
Bir animatöre ve bir animasyon klibine ihtiyacınız var.
Oluştur'u seçin, animasyonlar için bir klasör oluşturun ve animasyonu Player_Idle altına kaydedin.
Animasyon karakterlerinin yerleştirilebileceği zaman çizelgesi görünür.
Animasyon karakterlerini animasyon penceresine sürükleyin. Çerçeveler eklendi:
Şimdi karakter çok hızlı canlandırılacaktı. Saniyede oynatılan görüntüleri ayarlamak gereklidir.
Örnek oranını görüntülemek için, animasyon penceresinden ayarları seçin ve "Örnek Hızını Göster" seçeneğini seçin.
Bu şimdi 60'ta.
12 olarak değiştirin.
O zaman animasyon artık o kadar hızlı çalışmıyor.
Görüntüler, zaman çizelgesinde sürükle ve bırak kullanılarak taşınabilir veya Sil kullanılarak kaldırılabilir.
Her şey, karakterden yürümek gibi diğer animasyonlar için de çalışır.
Bunu yapmak için şunu seçin: Yeni Klip Oluştur
Çömelme ve atlama için tekrarlayın.
Zıplarken o kadar çok sprite'a sahip değilseniz ve örneğin sadece 2 sprite'a sahipseniz, sample değerini 2 olarak ayarlayabilirsiniz.
Animasyon klasöründe, animatör denetleyicisi, animasyonlardan farklı bir simge görünümüne sahiptir:
Hangi animasyonun ne zaman oynatılacağını belirler.
Animatör çift tıklamayla açılır:
Orada hangi animasyonun oynatılacağı belirlenir. Bir animasyon, doğrudan projeden animatöre sürüklenip bırakılabilir.
Player_Idle turuncu bir oka bağlıdır ve başlangıç animasyonu olduğu için turuncu olarak işaretlenmiştir. Oyuna başladığınızda sürekli olarak “boşta kalma animasyonu” oynatılıyor. Farenin sağ tuşuyla “Farklı ayarla” seçeneğini kullanabilirsiniz. tabaka “Varsayılan Durum”u seçin ve ilk animasyonu farklı bir animasyon yapın.
Koşmaya başladığınızda, animasyon uygun animasyona geçmelidir. Player_Idle'a sağ tıklayın ve Geçiş Yap'ı seçin. Bu, Player_Idle'dan Player_Run'a bir bağlantı oluşturur.
Bağlantıyı seçerseniz, bir animasyondan diğerine geçişin ne zaman gerçekleşeceğini düzenleyebilirsiniz.
Bunun için bir koşula ihtiyacınız var. Bunun çalışması için bir parametreye de ihtiyacınız var.
Bir "şamandıra" oluşturun.
Oyuncunun hızını temsil eder.
Ardından koşulu eklersiniz:
Örneğin, hız 0.01'den büyük olduğunda animasyonun değişeceğini belirtirsiniz:
Karakter hareket ettiğinde diğer animasyonla başlar.
"Çıkış Zamanı Var"ı devre dışı bırakın.
Geçiş süresini 0 olarak değiştirin.
Karakter yürümeyi bıraktığında koşma animasyonu durmalıdır. Boşta geri dönen başka bir geçiş oluşturun.
Hız 0.01'den düşük olduğunda animasyonun değişeceği koşulu buradan seçin.
Burada da "Çıkış Süresi Var"ı devre dışı bırakın ve geçiş süresini 0 olarak ayarlayın.
Değişiklikler artık komut dosyasında yapılmıştır:
Bir karakter için 2 komut dosyamız var: CharacterController, karakteri hareket ettiren fiziği ve figürün ne zaman ve hangi hızda hareket ettiğini söyleyen PlayerMovement komut dosyasıyla ilgilenir.
İlk önce PlayerMovement komut dosyasını açın. İlk önce animatöre erişmek istiyoruz:
Unity, animasyon oluştururken animatörü oynatıcıya ekler. Oyuncuyla ilişkiyi kuran animatör denetleyicisine atıfta bulunur. Animatör, PlayerMovement komut dosyası tarafından kontrol edilebilir olmalıdır:
genel animatör animatör;
Unity'ye geri dönün ve Animatör alanının artık Oyuncu Hareket Komut Dosyasında göründüğünü göreceksiniz. Animatör bileşeni daha sonra denetçi penceresinden içine sürüklenir.
Script Animator'a her yazdığımızda, animatör bileşenine erişiriz.
Güncelleme işlevinde artık animatöre ve ilgili bileşene erişebilirsiniz:
animator.SetFloat ("Hız", Mathf.Abs (horizontalMove);
Mathf.Abs işlevi, karakterinizin hareket değerinin her zaman pozitif olmasını sağlar.
Oyununuza şimdi Unity'de başlarsanız, Unity siz yürürken karakterinizin animasyonunu oynatır. Durduğunuzda, boşta animasyonu etkinleştirilir.
Şimdi sıra atlamakla ilgili: Bunun için animatörde “Herhangi Bir Durum” seçeneğini kullanıyoruz. Şu anda hangi animasyon oynuyorsa oynasın, karakter zıpladığında o animasyona geçecektir.
Bunun için karakterin her zaman atlamaması için bir koşul gereklidir: Şimdi başka bir parametreye ihtiyaç var.
Buna IsJumping adını verin ve “IsJumping” koşulunu true olarak ayarlayın.
Çıkış zamanı istemiyoruz ve geçiş süresini 0 olarak ayarlıyoruz.
Karakter, animasyondan zıplamaya "boşta" geri dönebilmelidir. Başka bir bağlantı oluşturulacak.
"IsJumping" koşulu yanlış olarak ve Hız 0.01'den Az olarak ayarlanır.
Jump to run'dan başka bir bağlantı oluşturulur. Çalıştırmaya geçişin ek koşulları vardır:
IsJumping = yanlış ve Hız> 0.01
Her ikisi için de HasExit zamanını false ve süreyi 0 olarak ayarladık.
Şimdi animasyonlar için komut dosyası ayarlandı:
animator.SetBool ("IsJumping", doğru);
PlayerMovementScript'e karakterin yere düştüğünde zıplamayı bıraktığını iletiriz:
genel geçersiz OnLanding ()
{
animator.SetBool ("IsJumping", yanlış);
}
Artık Unity'ye yeni bir OnLandEvent ekleyebiliriz:
Bir OnLandEvent eklersiniz ve PlayerMovement: OnLanding () altından seçersiniz
Daha sonra Unity zıplarken zıplama animasyonunu oynatır ve karakter indiğinde onu bitirir.
Unity animasyonu her zaman çok kısa oynatır. Animasyonun tam olarak oynatılması için "Can Geçiş Yapabilir" özelliğini devre dışı bırakın:
Şimdi çömelme animasyonu eklendi.
Boşta'yı Crouch'a bağlayın:
Bir koşul ekleyin: Yeni bir parametre oluşturun: IsCrouching
Crouching IsTrue ise, karakterin çömelmesini sağlayın:
ExitTime'ı ve süreyi yeniden düzenleyin. Yeniden bağlan.
Çıkış zamanını devre dışı bırakırsanız ve animasyonun süresini 0'a ayarlarsanız, önce çıkış süresini uzatın ve daha sonra devre dışı bırakın, aksi takdirde konsola bir çok uyarı gelir. Çalıştırma animasyonundan başka bir bağlantı oluşturun.
Başka bir dönüş bağlantısı oluşturun:
IsCrouching yanlış ve Hız> 0.01
Başka bir OnCrouchEvent ekleyin.
Bunun için PlayerMovement betiğinde başka bir fonksiyona ihtiyacımız var:
genel geçersiz OnCrouching (bool isCrouching)
{
animator.SetBook ("IsCrouching", isCrouching);
}
Şimdi Crouch olayını ekleyin. Önemli: Komut dosyası, genel BoolEvent [System.Serializable] sınıfından önce gelmelidir. Aksi takdirde, CrouchEvent Unity Inspector penceresinde görünmez:
PlayerMovement komut dosyasını tekrar ekleyin. PlayerMovement Komut Dosyası altında, yukarıdaki bölümden OnCrouching'i seçin.