Durum makinesi
- Oyun Geliştirme kursu
- İleri seviye
- Ders 41/71
- 4 dk
Basit bir FSM ile düşman durumlarını öğrenirsin.
Sonlu Durum Makinesi (FSM)
FSM (Finite State Machine), bir karakterin belirli durumlardan (örneğin Devriye / Patrol, Kovalama / Chase, Saldırı / Attack) yalnızca birinde bulunmasını sağlayan sade bir mimaridir.
public enum EnemyState {
Patrol,
Chase,
Attack
}Durumlar bir enum ile tanımlanır ve karakter aynı anda asla iki farklı durumda bulunamaz.
Durum Geçişleri ve switch Bloğu
Her karede aktif duruma karşılık gelen davranış bir switch-case bloğu içinde yürütülür. Koşullar sağlandığında durum değişkeni güncellenir.
switch (currentState) {
case EnemyState.Patrol:
PatrolAlongWaypoints();
break;
case EnemyState.Chase:
agent.SetDestination(player.position);
break;
}Örneğin oyuncu belirli bir menzile yaklaştığında currentState = EnemyState.Chase; atanarak takip başlatılır.
Uygulama Durum makinesi geçişi
Bir Start metodu tanımla. İçinde string aktifDurum = "Chase"; tanımla ve konsola "Dusman durumu: " + aktifDurum yazdır.
Başlangıç kodu
using UnityEngine;
public class FsmTester : MonoBehaviour
{
// Start icinde aktifDurum tanimla ve yazdir
}Örnek çözüm
using UnityEngine;
public class FsmTester : MonoBehaviour
{
void Start()
{
string aktifDurum = "Chase";
Debug.Log("Dusman durumu: " + aktifDurum);
}
}Beklenen çıktı
Dusman durumu: Chase
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Düşmanın oyuncuyu gördüğünde Devriye (Patrol) durumundan Kovalama (Chase) durumuna geçmesini sağlayan mimari yapıya ne ad verilir?
- Sonlu Durum Makinesi (Finite State Machine / FSM) Doğru cevap
- Audio Listener
- Shader Pipeline
- JSON Deserializer
Açıklama: Sonlu Durum Makinesi (FSM), koşullara göre (oyuncuyu görme gibi) durumlar arasında geçiş yapılmasını yönetir.
2 Düşman durumları enum tanımı
public enum EnemyState { ____, Chase, Attack }
public enum EnemyState { Patrol, Chase, Attack }
Açıklama: Düşmanın nöbet tuttuğu devriye durumunu tanımlamak için 'Patrol' kullanılır.
3 FSM durum kavramları
| Kavram | Anlamı |
|---|---|
Patrol |
Belirlenen rotada nöbet devriyesi |
Chase |
Oyuncuyu hedef alarak takip etme |
Attack |
Oyuncu menzildeyken hasar verme |
FSM |
Duruma göre davranışı yöneten makine |