State Machine (durum makinesi) oyun geliştirirken yaygın olarak kullanılan bir behavioral model (davranışsal model). Bu model ile objenizin durumları arasındaki geçişleri yönetme, durumları uygulama işini ayrı bir katmana taşıyabiliyorsunuz.
Örneğin bir kapı için düşünecek olursak, kapının durumları kapalı ve açık ve açık olsun. Kapının açılma şartı bir oyuncunun yaklaşması, kapanma şartı da yakınlarda oyuncu olmaması olsun. Kapının açık ve kapalı durumu (state), kapının açık olup olmaması bir değişken olur.
Bu değişkenlerin değerleri farklı yerlerden değişebilir, ancak stateler arasındaki geçişleri ve bağlı oldukları koşulları bilerek, bu durumlar arasındaki geçişleri yapan bizim state machine‘imiz oluyor. Bu örnek dışında çok daha fazla duruma sahip olan ve durumları arasında birçok geçiş bulunduran örnekler bulmak da mümkün.
State Machine kullanmanın ve geliştirmenin birçok farklı yöntemi var, bunlardan biriyse Unity’nin animasyonları oynatmak için kullandığımız Animator Controller componentidir (bileşenidir).

Resimde sol tarafta gördükleriniz Animator Controller’daki adıyla parametreler yani değişkenler, sağ tarafta dikdörtgen şeklinde olanlar stateler, beyaz oklarsa transitionları temsil ediyor. Burada transitionların kendi içlerinde soldaki parametreleri kullanan koşulları olabilir ya da hiçbir koşula gerek duymadan geçiş sağlıyor olabilir.
Animator Controller oyun içerisinde animasyonları kontrol etmek ve birbirleri arasında düzgün bir geçiş sağlamak için geliştirilmiş olsa da, kapasitesini geliştirerek ve burasıyla uyumlu çalışacak araçlar yazarak, bu componenti animasyonlar dışında kullanmak da mümkün.
Bir sonraki yazımda neden ayrı bir State Machine geliştirdiğime bir temel olması için burada kısaca açıklamaya çalıştım.
Bir yanıt yazın
Yorum yapabilmek için oturum açmalısınız.