Grafik Editörü durum makineleri

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bir durum makinesi, animasyon düğümlerini Idle, Walk, Run ve Jump gibi adlandırılmış durumlara birleştirir. Aktif durumu oynatır ve bir geçiş koşulu true olarak değerlendiğinde başka bir duruma geçiş yapar. Geçiş mantığı yazmadan hangi animasyonların birbirini takip edebileceğini tanımlamak için bir durum makinesi kullanın.

Her durum, durum makinesinin bir girişine bağlanır. Bir durum, bir klip, bir karışım düğümü veya başka bir durum makinesi olabilir. Durum makinesi, aktif animasyon pozunu veya geçiş yaparken iki poz arasında bir karışımı çıkış olarak verir; bunu grafikteki bir sonraki düğüme bağlarsınız.

Ön koşullar

Bir durum makinesi oluşturmadan önce, Animasyon Grafik Editörü ile tanışın, nasıl açılacağını ve bir animasyon grafiği oluşturulacağını öğrenin.

Bir durum makinesi oluşturun

Aşağıdaki örnek, JumpFallLandRunExample'dan üç durumu kullanır: Locomotion, Fall ve LandIdle. Karakter normal bir şekilde hareket eder, havadayken düşme animasyonuna geçer ve yere inmeden önce bir iniş animasyonu oynatır. Bu adımlar, durum makinesine odaklanır; lokomasyon, düşme ve iniş için animasyon düğümleri ile başlayın.

  1. Grafik Editörü'nde sağ tıklayın ve Düğüm Ekle ⟩ Durum Makinesi'ni seçin.

    Grafik Editörü bağlam menüsü, Düğüm Ekle alt menüsü açık ve Durum Makinesi seçili.
  2. Durum makinesi düğümünde Aç'a tıklayın. Durum Makinesi görünümünde, Durum Oluştur'u kullanarak Locomotion, Fall ve LandIdle adında üç durum ekleyin.

    Durum Makinesi görünümü, Durum Oluştur butonu ve Giriş ve Herhangi bir durum düğümleri.
  3. Grafiğe Geri Dön'e tıklayın ve animasyon düğümlerinizi ilgili durum makinesi girişlerine bağlayın:

    • Locomotion: Lokomasyon animasyonunuzu bağlayın. Referans grafiği, Speed'e göre idle ve koşu animasyonlarını karıştırmak için IdleRunBlend adında bir Blend1DNode kullanır.
    • Fall: Düşme ClipNode'unu bağlayın ve Oynatma Modu'nu Enum.AnimationNodePlayMode|OnceAndHold olarak ayarlayın, böylece karakter yere inene kadar son pozunu korur.
    • LandIdle: Bir iniş klibi bağlayın ve Oynatma Modu'nu Enum.AnimationNodePlayMode|OnceAndHold olarak ayarlayın, böylece tamamlanabilir ve lokomasyona geçiş yapabilir.

    Durum makinesi çıkışını Grafik Çıkışı'nın Poz girişine bağlayın.

    IdleRunBlend, Fall ve LandIdle düğümleri, bir Durum Makinesi düğümünün Locomotion, Fall ve LandIdle girişlerine bağlanmış, çıkışı Grafik Çıkışına bağlı.
  4. Durum Makinesi görünümünü tekrar açın ve (Giriş)'ten Locomotion'a bir geçiş sürükleyin. Durum makinesi, grafik başladığında bu durumda başlar.

    Giriş düğümü, Locomotion durumuna bağlı.
  5. Grounded adında bir Boolean grafik parametresi ekleyin ve true olarak ayarlayın. Bu parametre, karakterin yerde olup olmadığını gösterir.

  6. Aşağıdaki geçişleri ekleyin; kaynak durumdan hedef duruma bir bağlantı sürükleyin, ardından her geçişi yapılandırın:

    • Locomotion'dan Fall'a: Bekle'yi İfade olarak ayarlayın, İfade'yi not Grounded olarak ayarlayın ve Uzunluk'u 0.2 saniye olarak ayarlayın. Düşme animasyonu, karakter yerden ayrıldığında başlar.
    • Fall'dan LandIdle'a: Bekle'yi İfade olarak ayarlayın, İfade'yi Grounded olarak ayarlayın ve Uzunluk'u 0.1 saniye olarak ayarlayın. İniş animasyonu, karakter yere değdiğinde başlar.
    • LandIdle'dan Locomotion'a: Bekle'yi Tamamlandı olarak ayarlayın, Ne Zaman'ı Enum.AnimationNodeTransitionWhen|BeforeFinished olarak ayarlayın ve Uzunluk'u 0.2 saniye olarak ayarlayın. Durum makinesi, iniş animasyonunun son 0.2 saniyesinde lokomasyona geri karışmaya başlar.
    LandIdle'dan Locomotion'a geçiş ayarları, Uzunluk 0.2, Eğri Doğrusal, Bekle Tamamlandı ve Ne Zaman Tamamlanmadan Önce olarak ayarlanmış.
  7. Üç geçiş için Eğri'yi varsayılan (Linear) olarak bırakın. Grafiği önizleyin ve Grounded'ı false olarak değiştirin, böylece Fall'a geçin, ardından tekrar true yaparak LandIdle'ı oynatın ve Locomotion'a geri dönün.

  8. Karakter yerden ayrıldığında ve yere değdiğinde Grounded'ı oyun kodunuzdan güncelleyin. Lokomasyon karışımınız Speed kullanıyorsa, karakter hareket ettikçe o parametreyi güncelleyin. Parametre iş akışı için API entegrasyonu kısmına bakın.

  9. Durum makinesini zıplama ve ek iniş durumları ile genişleterek tam hareket grafiğini oluşturun. JumpFallLandRunExample, duruma göre farklı zıplamalar ve inişler içerir.

Durum makinesi özellikleri

Durum makinesi düğüm özellikleri

Girişler
  • State1...StateN: Her durumu tanımlayan animasyon düğümleri. Durumun adı, durum makinesi düğümündeki girişin adıyla eşleşmelidir.
Özellikler
ÖzellikTürAçıklama
EntryStateObjectValueGrafik başladığında aktif olan duruma işaret eden bir ObjectValue.
Olay verisi
  • Olay Yönetimi: Aktif durumdan gelen olaylar, ağırlıkları değişmeden geçer.
  • Olay Yayılımı: Sadece aktif durumdan gelen olayları geçirir. Bir geçiş sırasında, olay yayılımı küresel olay kurallarını takip eder.

Geçiş özellikleri

Bir geçiş, bir veya daha fazla kaynak durumu, bir hedef durumu ve bir koşul içerir. Aktif durum bir kaynak durumu ile eşleştiğinde, durum makinesi koşulu kontrol eder. Koşul true olarak değerlendiğinde hedef duruma geçiş yapar.

Bekle, geçiş koşulu UI'sini belirler. İfade (Enum.AnimationNodeWaitFor|Trigger) seçildiğinde bir İfade kutusu görüntülenir. Bir İfade, doğrudan bir boolean grafik parametresine, örneğin ShouldJump, veya Speed >= 12 gibi bir koşulu değerlendirebilir. Tamamlandı (Enum.AnimationNodeWaitFor|Finished) seçildiğinde Ne Zaman açılır.

Birden fazla geçişin İfade'si doğru olduğunda, durum makinesi önce en yüksek Öncelik değerine sahip geçişi değerlendirir. Öncelikler aynı olduğunda, rastgele bir geçiş seçer. Sonucu öngörülebilir hale getirmek için rekabet eden geçişlere farklı öncelikler atayın.

ÖzellikTürAçıklama
FromObjectValueGeçişi başlatabilecek duruma işaret eden bir ObjectValue. (Herhangi bir) geçiş için bu özelliği ayarlamayın.
ToObjectValueHedef duruma işaret eden bir ObjectValue.
WaitForEnum.AnimationNodeWaitForHangi geçiş koşulu UI'sinin görüneceğini belirler. Enum.AnimationNodeWaitFor|Trigger, İfade kutusunu görüntüler. Enum.AnimationNodeWaitFor|Finished, Ne Zaman açılır.
WhenEnum.AnimationNodeTransitionWhenBekle Tamamlandı olduğunda kullanılabilir. Kaynak durum tamamlandığında başlamak için Enum.AnimationNodeTransitionWhen|Finished'ı veya kaynak durum tamamlanmadan bir Süre önce karışmaya başlamak için Enum.AnimationNodeTransitionWhen|BeforeFinished'ı seçin.
ExpressionStringBekle İfade olduğunda kullanılabilir. true olarak değerlendiğinde geçişi başlatan bir boolean grafik parametresi veya ifadesidir. Desteklenenler için İfade kısmına bakın.
PriorityNumberBirden fazla İfade doğru olduğunda kullanılan sıralama. Daha yüksek değerler önceliklidir. Geçerli değerler 0 ile 65,535 arasında değişir.
DurationNumberHedef duruma karışmak için geçen süre, saniye cinsinden. Varsayılan 0.15 saniyedir.
CurveEnum.PoseEasingStyleKarışım sırasında kullanılan easing. Sadece Linear ve CubicV2 desteklenir. Varsayılan Linear'dır.
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.