Animasyon Grafiği Editörü, teknik sanatçılara ve animatörlere, karmaşık animasyon mantığını doğrudan Roblox Studio içinde oluşturma yetkisi veren görsel, düğüm tabanlı bir araçtır. Blend ağaçları gibi davranışları oluşturmak için akıcı bir arayüz sunarak, karakter hareketi için geleneksel manuel betimleme bağımlılığını ortadan kaldırır.
Bu sistem, mevcut animasyon iş akışınızla birlikte çalışır:
- Animasyon Editörü: Bireysel klipleri oluşturmak ve anahtar çerçeveleri ve eğrileri ince ayar yapmak için Animasyon Editörü kullanmaya devam edin.
- Animasyon Grafiği Editörü: Bu aracı kullanarak bu klipleri alıp, karmaşık oyun davranışlarını yönlendirmek için bir mantık ağacına düzenleyin.
İşbirliğini artırmak için tasarlanan görsel grafik, geliştiricilerin animatörler tarafından oluşturulan mantığı hızlı bir şekilde incelemesine, hata ayıklamasına ve anlamasına olanak tanır. Sanatçılar etkileşimli hareketi geliştirmeye odaklanırken, geliştiriciler de karışık animasyonlar ve durumlar üzerinde doğrudan kontrol sağlamak için animasyon grafiği düğümlerine programatik olarak erişebilirler.
Bir grafik oluşturun
Animasyonlu bir karakter için mantık oluşturmaya başlamak için, Studio şeridindeki Avatar sekmesi aracılığıyla Animasyon Grafiği editörüne erişin. Aşağıdaki adımlar, bir rig başlatmayı ve varsayılan yürüyüş ve el sallama animasyonlarını kullanarak temel bir düğüm ağı oluşturmayı göstermektedir.
Pratik uygulamalar hakkında daha derin bir inceleme için, hem temel hem de karmaşık uygulama örneklerini içeren Animasyon Grafiği Referans Dosyası üzerinde keşif yapabilirsiniz.
Kendi animasyon grafiğinizi oluşturmak için, referansta sağlanan temel örneğe benzer şekilde aşağıdaki adımları izleyin:
Studio'da, Avatar sekmesine giderek ve Karakter ⟩ Benim Avatarım seçeneğini seçerek animasyonlu bir rig ekleyin.

Avatar sekmesinde Grafik Editörü'ne giderek Animasyon Grafiği Editörünü açın.

3D görünümde animasyonlu rigi seçin. Grafik editör görünümünde, sol üst köşede Grafik'i seçin ve yeni bir grafik oluşturmak için Yeni'yi seçin.
Grafik Editörü'nde sağ tıklayın ve Düğüm Ekle ⟩ Klip seçeneğini seçin.

Yeni Klip düğümünde, Animasyon Kimliğini ayarlayın.
Animasyon Kimliği açılır menüsünü seçin.
Belirli bir animasyon varlık kimliğini göndermek için İçe Aktar'a tıklayın.

Animasyon Kimliği alanına varsayılan Yürüyüş animasyonunu ekleyin: 507777826.
İçe Aktar'ı seçin.
Varsayılan Dalga animasyonunu kullanarak adım 4-5'i tekrarlayarak başka bir klip düğümü ekleyin: 507770239.

Grafik Editörü'nde sağ tıklayın ve Ekle'yi seçin.

Klip düğümlerini Ekle düğümüne bağlayın; sağ üst çıkış konektörünü uygun porta sürükleyin:
- Yürüyüş animasyonuna sahip Klip düğümünü Temel portuna bağlayın.
- El sallama animasyonuna sahip Klip düğümünü Ekleme portuna bağlayın.

Ekle düğümünden, sağ üst çıkış konektörünü Grafik Çıkışı Poz portuna bağlayın.

- İSTEĞE BAĞLIHız değişkeninize bir parametre atayın.
Yeşil Hız portunu boş bir alana tıklayıp sürükleyin. Yeni bir parametre düğümü görüntülenir.

Grafik editörünün sol üst kısmında, düğümlerdeki parametreleri hızlı bir şekilde değiştirmek için parametre panelini kullanın. Ayrıca buna programatik olarak erişebilirsiniz.

Animasyonu test etmek için oynat düğmesine basın.

Çeşitli ağırlıkları, hızları, oynatma modlarını ve diğer animasyonları test etmeyi deneyin. Bireysel düğümler hakkında daha fazla bilgi için Düğüm referansı sayfasına bakın.
API entegrasyonu
Bir Animasyon Grafiği oluşturmak ve dağıtmak, standart Roblox animasyon hattını takip eder. Animasyon Grafiği Editöründe bir rig seçtikten sonra, yeni bir AnimationGraphDefinition varlığı oluşturulur. Bu varlık, düğümlerinizin, bağlantılarınızın ve parametrelerinizin konteyneri olarak hizmet eder. Mantığınız tamamlandığında, grafiği yayınlayarak standart bir Varlık Kimliği alırsınız.
Betiklerinizde, bu grafikleri, geleneksel bir animasyon gibi Animator üzerine yükleyerek etkileşimde bulunursunuz. Grafiğin iç mantığını yönlendirmek için, gerçek zamanlı değerleri — hareket hızı veya durum boolean'ları gibi — doğrudan grafiğin değişkenlerine geçirmek için AnimationTrack:SetParameter() kullanın.
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://123456789" -- Yayınlanan Grafiğinizin Kimliği
local animationTrack = animator:LoadAnimation(animation)
animationTrack:Play()
-- Dinamik parametre güncellemeleri RunService aracılığıyla
game:GetService("RunService").Stepped:Connect(function(_, dt)
local currentSpeed = humanoidRootPart.AssemblyLinearVelocity.Magnitude
animationTrack:SetParameter("humanoidSpeed", currentSpeed)
end)Düğüm referansı
Küresel olay kuralları
Tüm düğümler ve geçişler için, varsayılan olarak aşağıdaki kurallar geçerlidir:
- Olaylar, kaynak düğümünden yukarı doğru grafikte yayılır. Her olay, kaynağının son karışım üzerindeki etkisini temsil eden bir ağırlık taşır. Ağırlık herhangi bir noktada sıfıra ulaşırsa, olay susturulur.
- Özel olay mantığı olmayan düğümler, tüm olayları değişmeden geçirir; girişler arasında karışım yapan veya seçim yapan düğümler, ağırlığı ölçeklendirebilir veya birincil olmayan girişlerden gelen olayları engelleyebilir (her düğüm için Olay bölümüne bakın).
- Grafiğin tepe noktasına ulaşan işaretçi olayları, AnimationTrack:GetMarkerReachedSignal() aracılığıyla gözlemlenebilir.
Geçişler
Animasyon Grafiğindeki birkaç düğüm (örneğin Seç, Öncelik Seç, Dizi ve Rastgele Dizi), aktif girişler arasında geçiş yaparken animasyonların nasıl karıştığını yönetir. Düğüm referansında gereksizliği önlemek için, bu davranışlar standart geçiş özellik gruplarıyla tanımlanır.
Varsayılan geçiş

Düğümün yeni bir aktif girişi geçiş yaptığında uygulanan temel karışım davranışı.
- DefaultTransitionDuration (sayı): Yeni pozun tamamen karışması için geçen süre (saniye cinsinden).
- DefaultTransitionCurve (Enum.PoseEasingStyle): Karışım sırasında uygulanan easing fonksiyonu. Şu anda yalnızca Enum.PoseEasingStyle.Linear ve Enum.PoseEasingStyle.CubicV2 desteklenmektedir.
Geçiş geçersiz kılma

Varsayılan geçişi geçersiz kılan girişe özgü bağlantı özellikleri. Süre ve eğri geçersiz kılmaları, düğüm o girişi geçiş yaptığında uygulanır; BeforeFinished geçişleri, giden girişin geçersiz kılmalarını kullanır.
- TransitionOverrideDuration (sayı): Varsayılan geçiş süresini geçersiz kılar.
- TransitionOverrideCurve (Enum.PoseEasingStyle): Varsayılan geçiş eğrisini geçersiz kılar. Şu anda yalnızca Enum.PoseEasingStyle.Linear ve Enum.PoseEasingStyle.CubicV2 desteklenmektedir.
Geçiş zamanlaması
Dizi düğüm türleri için, dizinin bir sonraki girişi ne zaman ilerleyeceğini kontrol eden ayarlar:
- WaitFor (Enum.AnimationNodeWaitFor): İlerleme koşulunu ayarlar. Mevcut girişin bitmesini veya bir döngüyü tamamlamasını beklemek için Enum.AnimationNodeWaitFor|Finished (varsayılan) kullanın veya WaitForTrigger true olduğunda ilerlemek için Enum.AnimationNodeWaitFor|Trigger kullanın. Düğüm düzeyinde varsayılanı DefaultWaitFor ile ayarlayın veya bir girişi geçersiz kılmak için TransitionOverrideWaitFor kullanın.
- When (Enum.AnimationNodeTransitionWhen): Wait For Enum.AnimationNodeWaitFor|Finished olduğunda uygulanır. Düğüm düzeyinde varsayılanı DefaultTransitionWhen ile ayarlayın veya giden giriş için TransitionOverrideWhen ile geçersiz kılın.
- Enum.AnimationNodeTransitionWhen|Finished (varsayılan): Mevcut giriş tamamlandığında karışmaya başlar.
- Enum.AnimationNodeTransitionWhen|BeforeFinished: Mevcut giriş tamamlanmadan bir geçiş süresi kadar önce karışmaya başlar, böylece karışım animasyonun sonunu örtüşür. Örneğin, 0.2 saniyelik bir geçiş, animasyonun son 0.2 saniyesinde başlar.
RandomSequenceNode ayrıca karışımın ne zaman başlayacağını kontrol etmek için DefaultTransitionWhen ve TransitionOverrideWhen'ı destekler.
Durum makinesi geçişleri için Geçiş özellikleri sayfasına bakın.
Çoğaltma
Animasyon grafiği parametreleri ve iç düğüm durumu otomatik olarak çoğaltılır. Çoğaltma modu, Animasyon betiği oluşturulduğunda Workspace.AuthorityMode tarafından belirlenir:
- Enum.AuthorityMode.Automatic: AnimationTrack:SetParameter() aracılığıyla ayarlanan parametreler otomatik olarak diğer eşler üzerinde çoğaltılır.
- Enum.AuthorityMode.Server: Sunucu, tam grafik simülasyonunu yönetir. Enum.AnimationNodeType.ClipNode için geçen süre gibi tüm düğüm durumları ve grafik parametreleri, sunucudan istemcilere otomatik olarak çoğaltılır. Sahip oyuncunun istemcisi, pürüzsüz yerel oynatma için tahmin kullanır.
Örnek Animasyon Betikleri
Bir rig için bir animasyon grafiğini yönlendirmek üzere örnek betikler oluşturmak için, Animasyon Grafiği Editöründe Grafik -> Animasyon betiği oluştur seçeneğini kullanın. Bu, StarterCharacterScripts altında (oyuncu karakterleri için) veya doğrudan rig üzerinde (NPC'ler için) yerleştirilen bir betik hiyerarşisi üretir:
Animate (ModuleScript)
├── RunClient (LocalScript)
└── RunServer (Script, RunContext = Legacy)Animate ModuleScript, grafik yükleme mantığını içerir. RunClient ve RunServer betikleri, uygun bağlamda bunu çağırır. Hangi betiklerin dahil olduğu kullanım durumuna bağlıdır:
| Kullanım Durumu | Dahil Edilen Betikler | Davranış |
|---|---|---|
| NPC (herhangi bir mod) | RunServer | Sunucu grafiği yükler ve oynatır. Durum otomatik olarak tüm istemcilere çoğaltılır. |
| Oyuncu + Enum.AuthorityMode.Server | RunServer + RunClient | Sunucu, grafiği yetkili olarak yönlendirir. Sahip istemci, geri alma tabanlı yerel tahmin için Enum.PredictionMode'u etkinleştirir. |
| Oyuncu + Enum.AuthorityMode.Automatic | RunClient | Sahip istemci grafiği yükler ve oynatır. Parametreler otomatik olarak sunucuya ve diğer istemcilere çoğaltılır. |
Aşağıdaki özellikler, Animate betiğinde saklanır ve davranışını yapılandırır:
| Özellik | Tür | Açıklama |
|---|---|---|
| GraphName | String | Animasyon grafiği varlığının adı. |
| CharacterName | String | Grafiğin hedef aldığı rig'in adı. |
| SourceAssetId | String | Grafiğin yayınlanan Varlık Kimliği. Yayınlanmış oyunlarda çalışma zamanında kullanılır. |
| IsServerAuthority | Boolean | Betik, Workspace.AuthorityMode Server olarak ayarlandığında mı oluşturuldu. Çoğaltma stratejisini belirler. |
| PreviewInStudio | Boolean | Doğru olduğunda (varsayılan), Studio oynatma testi, yayınlanmamış grafiği yerel olarak yükler, böylece yayınlamadan iterasyon yapabilirsiniz. Yayınlanmış varlığı Studio'da test etmek için yanlış olarak ayarlayın. Şu anda Enum.AuthorityMode.Server'da bu desteklenmemektedir. |
Otomatik modda parametre çoğaltma
Workspace.AuthorityMode Otomatik olduğunda:
- sahip istemci, oyuncu karakter grafikleri yönlendirir; sunucu, NPC grafiklerini yönlendirir.
- AnimationTrack:SetParameter() aracılığıyla ayarlanan parametreler otomatik olarak diğer eşlere çoğaltılır. Tek bir çerçevede birden fazla SetParameter çağrısı birleştirilir (son yazar kazanır).
- Parametre taşımak için ek betik yazımına gerek yoktur — motor, çoğaltmayı dahili olarak yönetir.
- Diğer istemciler, parametre güncellemelerini küçük bir gecikme ile (bir gönderim aralığı artı ağ gecikmesi) görür.
Sunucu yetkisi
Workspace.AuthorityMode Sunucu olduğunda:
- sunucu, tüm grafikler için yetkilidir — simülasyonu çalıştırır ve tam grafik durumunu çoğaltır.
- Ne çoğaltılır: Hem parametreler hem de iç düğüm durumu, geçen süre, mevcut seçimler, geçiş ilerlemesi, döngü sayıları ve RNG tohumları dahil. Bu, tüm istemcilerin aynı animasyon davranışını görmesini sağlar.
- Oyuncu karakterleri: Sunucu grafiği yönlendirir. Sahip istemcinin RunClient betiği, Animator üzerinde otomatik olarak Enum.PredictionMode'u etkinleştirir, böylece yerel oyuncu pürüzsüz, tahmin edilen animasyonu görür ve sunucu ile uyumsuzluk durumunda uzlaşır.
- NPC'ler: Sunucu, grafiği yalnızca yönlendirir; istemciler çoğaltılmış durumu gözlemler, yerel simülasyon yoktur.
Parametreleri yönlendirme
Grafiği çalıştıran her betikten AnimationTrack:SetParameter() kullanın:
- NPC (herhangi bir mod): AnimationTrack'a erişimi olan RunServer'dan SetParameter çağrısı yapın (veya herhangi bir sunucu Script).
- Enum.AuthorityMode.Server'da oyuncu karakteri: Hem RunServer hem de RunClient'dan SetParameter çağrısı yapın. Sunucunun yetkili simülasyonu yönlendirmek için parametrelere ihtiyacı vardır ve sahip istemcinin yerel tahminini yönlendirmek için aynı parametrelere ihtiyacı vardır.
- Enum.AuthorityMode.Automatic'da oyuncu karakteri: RunClient'dan SetParameter çağrısı yapın (veya AnimationTrack'a erişimi olan herhangi bir istemci LocalScript).
Oluşturulan Animate betiği, bir başlangıç noktası olarak yorum satırı haline getirilmiş bir SetParameter bloğu içerir. Yorumunu kaldırın ve oyun durumu (hareket hızı, humanoid durumu, giriş yönü vb.) üzerinden parametreleri yönlendirmek için değiştirin.