RecLast' Alıntı:
Aman tanrım didim
O ne öyle hocam biraz daha açıklayıcı ve büyük bir resim olursa herkes için çok faydalı olacak o kesin ^^
Video çekmeden geçiş koşullarının hepsinin içini göstermem zor. Misal sağ kısımda gördüğün jump kısmını açayım biraz;
Idle/Run main state burada, "drown" hariç bütün state'lerin dönüp dolaşacağı yer burası oluyor yani :
Karakterde isJumping?, isDoubleJumping? ve isOnCrate? şeklinde 3 tane bool değişkeni var bu kısımda çalışan. Karakter zıpladığında isJumping? true oluyor ve yere düştükten sonra tekrar false oluyor.
Şimdi karaktere zıplaması için input verdiğini düşün. "Idle/Run" state'i "Jump Start" state'ine geçiyor ve animasyon bittikten sonra direkt olarak Jump Loop'a geçiyor. Jump Loop halindeyken(Havadayken) gerçekleşebilecek 5 şey var;
1- Havadayken tekrar zıplama tuşuna basarak isDoubleJumping? bool değerini true yaparak Double Jump state'ine geçmek.
2- Karakterin düşmesini bekleyip Jump End state'lerinden birine geçmek.
3- Havadayken karakterin özel hareketi olan Belly Flop için input verdikten sonra "Fall Loop" state'ine geçmek
4- Bir kutunun üzerine düşmek, bu durumda Jump Start state'ine geri dönüyor durum makinesi, oradan da yine Jump Loop'a gidiyor.(Kutu dediğim şeyin üzerine düşünce karakter tekrar havalanıyor bu arada, o yüzden böyle
)
5- Havadayken attack için input vermek, tahmin edebileceğin gibi Attack Start Jumping state'ine gidiyor.
Bu jump kısmında bahsetmediğim diğer geçişler hep animasyonun bitmesiyle tetikleniyor.
State geçişlerinin geneli hep bu mantıkta, karakterin değişkenlerini sağlam bir şekilde oluşturursan emin ol en kolay ve eğlenceli kısım state machine oluşturmak oluyor