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
Animasyonlanabilir 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 animasyonlanabilir bir rig ekleyin.

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

3D görünümde animasyonlanabilir rig'i seçin ve Grafik Oluştur seçeneğini seçin.
Grafik Editörü'nde sağ tıklayın ve 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 seçeneğine tıklayın.

Animasyon Kimliği alanına varsayılan Yürüyüş animasyonunu ekleyin: 507777826.
İçe Aktar seçeneğini seçin.
Varsayılan El Sallama 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 seçeneğini seçin.

Klip düğümlerini Ekle düğümüne bağlayın üst sağ çıkış konektörünü uygun porta sürükleyerek:
- 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, üst sağ çı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ülenecektir.

Grafik editörünün sol üst kısmında, düğümlerinizdeki 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ı kısmı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()
-- RunService aracılığıyla dinamik parametre güncellemeleri
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, aşağıdaki kurallar varsayılan olarak 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ç, Sıra ve Rastgele Sıra), 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 pozda tamamen karışmak 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. Bu özellikler, düğümün o belirli girişi geçiş yaptığında uygulanı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.
Ç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 içinde: AnimationTrack:SetParameter() aracılığıyla ayarlanan parametreler otomatik olarak diğer eşlere çoğaltılır.
- Enum.AuthorityMode.Server içinde: Sunucu, tam grafik simülasyonunu yönlendirir. 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, yerel oynatım 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 (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 Sunucu 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 içinde desteklenmediğini unutmayın. |
Otomatik modda parametre çoğaltma
Workspace.AuthorityMode Otomatik olduğunda:
- sahip istemci, oyuncu karakter grafiğini yönlendirir; sunucu, NPC grafiğini yönlendirir.
- AnimationTrack:SetParameter() aracılığıyla ayarlanan parametreler otomatik olarak diğer eşlere çoğaltılır. Tek bir çerçeve içinde birden fazla SetParameter çağrısı birleştirilir (son yazar kazanır).
- Parametre taşımak için ek bir betik yazmaya 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.
- Neler ç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 otomatik olarak Animator üzerinde Enum.PredictionMode'u etkinleştirir, böylece yerel oyuncu, sunucu ile uyumsuzlukta uzlaşan pürüzsüz, tahmin edilen animasyonu görür.
- NPC'ler: Sunucu, grafiği yalnızca yönlendirir; istemciler, yerel simülasyon olmaksızın çoğaltılan durumu gözlemler.
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 içindeki oyuncu karakteri: Hem RunServer hem de RunClient'dan SetParameter çağrısı yapın. Sunucu, yetkili simülasyonu yönlendirmek için parametrelere ihtiyaç duyar ve sahip istemci, yerel tahminini yönlendirmek için aynı parametrelere ihtiyaç duyar.
- Enum.AuthorityMode.Automatic içindeki oyuncu karakteri: RunClient'dan (veya AnimationTrack'a erişimi olan herhangi bir istemci LocalScript'ten) SetParameter çağrısı yapın.
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.