Animasyon Grafiği Düzenleyicisi, teknik sanatçılar ve animatörlerin karmaşık animasyon mantıklarını doğrudan Roblox Studio içinde oluşturmalarına imkân veren görsel, düğme tabanlı bir araçtır. Karakter hareketi için manuel betikleme gibi geleneksel bağımlılıkları ortadan kaldırarak, blend ağaçları gibi davranışlar oluşturmak için akıcı bir arayüz sunar.
Bu sistem, mevcut animasyon iş akışınızla birlikte çalışır:
- Animasyon Editörü: Tekil klipleri yazmak ve anahtar kareleri ve eğrileri ince ayar yapmak için Animasyon Editörünü birincil aracınız olarak kullanmaya devam edin.
- Animasyon Grafiği Düzenleyicisi: Bu yeni çalışma alanını kullanarak bu klipleri alıp, karmaşık oynanış davranışlarını yönlendirmek için mantık ağacına yerleştirin.
İşbirliğini artırmak için tasarlanan görsel grafik, geliştiricilerin animatörler tarafından oluşturulan mantığı hızla incelemesine, hata ayıklamasına ve anlamasına olanak tanır. Sanatçılar etkileşimli hareketi geliştirirken, geliştiriciler hâlâ harmanlanmış animasyonlar ve durumlar üzerinde doğrudan kontrol için animasyon grafiği düğümlerine programatik olarak erişebilirler.
Bir grafik oluşturma
Animasyonlanabilir bir karakter için mantık oluşturmaya başlamak için, Studio şeridindeki Avatar sekmesi aracılığıyla Animasyon Grafiği düzenleyicisine erişin. Aşağıdaki adımlar, bir iskeletin nasıl başlatılacağını ve varsayılan yürüme ve el sallama animasyonlarını kullanarak basit bir düğüm ağının nasıl inşa edileceğini göstermektedir.
Pratik uygulamalar üzerinde daha derinlemesine bir inceleme için, hem temel hem de karmaşık uygulama örneklerini içeren Animasyon Grafiği Referans Dosyasını keşfedebilirsiniz.
Kendi animasyon grafiğinizi oluşturmak için, referanstaki basit ö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 iskelet ekleyin.

Avatar sekmesinde Grafik Düzenleyici seçeneğine giderek Animasyon Grafiği Düzenleyicisini açın.

3D görüntüleme alanında animasyonlanabilir iskeleti seçin ve Grafik Oluştur seçeneğine tıklayın.
Grafik Düzenleyicisinde sağ tıklayın ve Klip seçeneğini seçin.

Yeni Klip düğmesinde, 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 butonuna tıklayın.

Animasyon Kimliği alanına varsayılan Yürüme animasyonunu ekleyin: 507777826.
İçe Aktar'a tıklayın.
Varsayılan Dalga animasyonunu kullanarak 4-5 adımlarını tekrar ederek başka bir klip düğümü ekleyin: 507770239.

Grafik Düzenleyicisinde sağ tıklayın ve Ekle seçeneğini seçin.

Klip düğümlerini Ekle düğümüne bağlayın ve üst sağ çı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, üst sağ çıkış konektörünü Grafik Çıkışı Poz portuna bağlayın.

(İsteğe Bağlı) Hı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 düzenleyicisinin sol üst kısmında, parametreler panosunu kullanarak düğümlerinizdeki parametreleri hızlıca değiştirebilirsiniz. Ayrıca bunu programatik olarak da erişebilirsiniz.

Oynatma düğmesine basarak animasyonu test edin.

Farklı ağırlıklar, hızlar, oynatma modları ve diğer animasyonları test etmeyi deneyin. Bireysel düğümler hakkında daha fazla bilgi için Düğüm referansı bölümüne bakın.
API entegrasyonu
Bir Animasyon Grafiği oluşturmak ve dağıtmak, standart Roblox animasyon pipeline'ını takip eder. Animasyon Grafiği Düzenleyicisinde bir iskelet seçildiğinde, 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ınlamak için standart bir Varlık Kimliği alırsınız.
Betiklerinizde, bu grafiklerle Animator üzerine yükleyerek etkileşimde bulunursunuz, tıpkı geleneksel bir animasyon gibi. Grafiğin iç mantığını yönlendirmek için AnimationTrack:SetParameter() kullanarak, gerçek zamanlı değerleri - hareket hızı veya durum boole'ları gibi - doğrudan grafiğin değişkenlerine geçirebilirsiniz.
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://123456789" -- Yayınlanan Grafik Kimliğiniz
local animationTrack = animator:LoadAnimation(animation)
animationTrack:Play()
-- Koşma hizmeti 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ı
Her animasyon grafiği düğümü, animasyon verisini karakter iskeletine ulaşmadan önce işleyen bir mantık kapısı veya veri kaynağı olarak hizmet eder. Bu bölüm, Animasyon Grafiği Düzenleyicisindeki işlevsel blokların teknik bir dökümünü sağlar. Tüm düğümler şu anda bir animasyon pozunu çıktılar.
Her düğüm bölümünde şunlar bulunur:
- Tanım – Düğümün amacının ve grafikteki rolünün bir özeti.
- Girişler – Düğme giren veri akışları. Birden fazla giriş, Input1, Input2, ..., InputN olarak temsil edilir.
- Giriş özellikleri – Belirli bir girişle doğrudan ilişkili ayarlar (örneğin, bir Blend1D düğümündeki 0.5 konumuna atanmış bir Idle girişi).
- Etkinlik Verileri – Düğümün içinde grafik mantığını tetiklemek veya dış Luau betiklerini çalıştırmak için yayımlanan veya tüketilen olaylar. Bu davranış beta geliştirme sürecinde değişebilir.
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üğümden grafiğe yukarı doğru yayılarak taşınır. Her olay, kaynağının final karışımındaki etkisini temsil eden bir ağırlık taşır. Ağırlık herhangi bir noktada sıfıra ulaşırsa, olay sessiz hale gelir.
- Özel olay mantığı olmayan düğümler, tüm olayları değişmeden geçirir; girişler arasında harmanlama veya seçim yapan düğümler, ağırlığı ölçeklendirebilir veya birincil olmayan girişlerden olayları engelleyebilir (her düğüm için Olay bölümüne bakınız).
- Grafiğin tepe noktasına ulaşan işaretleyici olaylar, AnimationTrack:GetMarkerReachedSignal() aracılığıyla gözlemlenebilir.
Klip

Bir AnimationClip varlığına referanstır. Bu, diğer düğümlere karışım, seçim veya değişiklik için veri besleyen grafik içinde bir yaprak düğümdür.
- Girişler
- Yok
- Özellikler
Özellik Tür Açıklama Klip Varlık Kimliği Oynanacak animasyon varlığı (ör. rbxassetid://12345). Oynatma Modu Enum.AnimationNodePlayMode Klip süresi dolduğunda klipin davranışını tanımlar.
- Döngü (varsayılan): Klip tamamlandığında otomatik olarak baştan tekrar başlar.
- PingPong: Başlangıçtan sona kadar oynar, sonra hemen sona geri döner.
- Bir Kez ve Tut: Bir kez oynar ve tamamlandıktan sonra son pozisyonu korur.
- Bir Kez ve Sıfırla: Bir kez oynar ve tamamlandığında başlangıç pozisyonuna geri döner.
Ters Boolean Oynatma yönünü kontrol eder. Hız Sayı Oynatma hızını belirleyen bir çarpan. 0.0 grafiği durdurur, 1.0 normal hızdır ve 2.0 iki kat hızdır. Kes Boolean Klip süresinin kesilip kesilmeyeceğini açıp kapatır. Kes Başlangıcı Sayı Oynatmanın başlaması gereken mutlak zaman damgası (saniye cinsinden). Kes Sonu Sayı Oynatmanın sona ermesi gereken mutlak zaman damgası (saniye cinsinden). - Etkinlik verisi
- Etkinlik Yönetimi: Yok. Bu, çocuk düğümü olmayan bir yaprak düğümüdür.
- Etkinlik Yayma: Animasyon klibinde gömülü özel işaretleri okur (örneğin, "Ayak Sesleri", "Silah Salıncağı") ve bunları meydana geldikleri tam çerçevede isimlendirilmiş etkinlikler olarak yayar. Klip kesildiğinde, yalnızca tanımlı [Kes Başlangıcı, Kes Sonu] aralığında kalan işaretler yayımlanır (dahil).
Seç

Seçim özelliği aracılığıyla herhangi bir sayıda girişi seçer. Mevcut seçim her değiştiğinde yeni bir geçiş tetikler.
- Girişler
- Giriş1...GirişN
- Özellikler
Özellik Tür Açıklama Seçim Dize Seçilecek girişin benzersiz kimliği, giriş bağlantısının adıyla eşleşmelidir (örneğin, "Yürüyüş"). - Etkinlik verisi
- Etkinlik Yönetimi: Mevcut seçilen girişten gelen olaylar, ağırlıkları değişmeden geçer.
- Etkinlik Yayma: Şu anda seçilen girişten gelen tüm olayları yalnızca geçer. Bir geçiş sırasında, etkinlik yayma küresel olay kurallarını takip eder.
ÖncelikSeç

Bağlı girişlerden yukarıdan aşağıya doğru bir liste değerlendirir ve koşulu doğru olan ilk düğümü oynatır. Bu, belirli mantığa göre hiyerarşik animasyon seçimim yapmanıza olanak tanır. Mevcut seçim değiştiğinde yeni bir geçiş tetikler.
- Girişler
- Giriş1...GirişN
- Tetikleyici (Boolean): Bu girişin etkinleşmesi için doğru olması gereken mantıksal bir koşul. Mevcut sürümlerde, bu bir boolean parametre ile bağlıdır.
- Kesilebilir (Enum.AnimationNodeInterruptible): Bu aktif animasyonun daha yüksek öncelikli bir giriş tarafından ne zaman kesileceği kuralını tanımlar.
- Her Zaman (varsayılan): Giriş, daha yüksek öncelikli bir koşul tarafından her zaman kesilebilir.
- Tamamlanmış: Aktif animasyonun oynatımı tamamlanmadan daha yüksek öncelikli bir giriş devralamaz.
- Tetikleyici: Giriş yalnızca KesilebilirTetikleyici doğru olduğunda kesilebilir.
- KesilebilirTetikleyici (Boolean): Sadece Kesilebilir Tetikleyici olarak ayarlandığında mevcut. Bu belirli ifade doğru olduğunda giriş kesilebilir.
- Özellikler
Özellik Tür Açıklama VarsayılanKesilebilir Enum.AnimationNodeInterruptible Tüm girişlere uygulanan temel kesilebilirlik kuralı. Her giriş, kendi Kesilebilir giriş özelliği ile bunu değiştirebilir. VarsayılanKesilebilirTetikleyici Boolean Bir girişin çözümlenmiş Kesilebilir modu Tetikleyici olduğunda kullanılan temel tetikleyici değeri. Her giriş, kendi KesilebilirTetikleyici giriş özelliği ile bunu değiştirebilir. - Etkinlik verisi
- Etkinlik Yönetimi: Mevcut seçilen girişten gelen olaylar, ağırlıkları değişmeden geçer.
- Etkinlik Yayma: Şu anda seçilen girişten gelen tüm olayları yalnızca geçer. Bir geçiş sırasında, etkinlik yayma küresel olay kurallarını takip eder.
Ardışık

Bağlı girişleri belirli bir sırayla tanımlı bekleme koşullarına göre etkinleştirir. Mevcut seçim değiştiğinde yeni bir geçiş tetikler.
- Girişler
- Giriş1...GirişN
- Bekle (Enum.AnimationNodeWaitFor): Ardışığın bir sonraki girişe geçmeden karşılanması gereken koşulu belirtir.
- Tamamlanmış (varsayılan): Mevcut giriş bir döngüyü tamamladığında, bir sonraki girişe geçilir. Geçiş mantığı, bağlı girişe bağlıdır:
- Bir kez oynatılan klip: Klip bittiğinde geçer.
- Döngüsel klip: Bir tam döngü tamamlandığında geçer.
- Sonsuz döngü ile ardışık: Tüm girişlerde bir tam döngü tamamlandığında geçer.
- Sonsuz döngü ile ardışık: Tüm döngüler tamamlandığında geçer.
- Tetikleyici: Özelleştirilmiş mantıksal bir ifadenin doğru olması durumunda bir sonraki girişi etkinleştirir.
- BeklemeTetikleyici (Boolean): Sadece Bekle Tetikleyici olarak ayarlandığında mevcuttur.
- Özellikler
Özellik Tür Açıklama DöngüSayısı Sayı Toplam ardışık nesneleri döngü üzerinden geçme sayısı (varsayılan 1'dir). Bir değer 0, sonsuz döngü belirtir. Sayı aşıldığında, düğüm son girişin döngüleme veya tutma ayarına saygı gösterir. VarsayılanBekle Enum.AnimationNodeWaitFor Tüm girişlere uygulanan temel bekleme koşulu. Her giriş, kendi Bekle giriş özelliği ile bunu değiştirebilir. - Etkinlik verisi
- Etkinlik Yönetimi: Mevcut aktif girişten gelen olaylar, ağırlıkları değişmeden geçer.
- Etkinlik Yayma: Sadece mevcut aktif girişten gelen olayları geçer. Bir geçiş sırasında, etkinlik yayma küresel olay kurallarını takip eder.
RastgeleSıra

Bağlı girişlerden birini rastgele seçer ve oynatır. Şu anda seçilen animasyon tamamlandığında, düğüm rastgele bir başka girişi oynatmayı seçer. Her girişi belirli bir ağırlık atayarak seçim olasılığını etkileyebilirsiniz. Mevcut seçim değiştiğinde yeni bir geçiş tetikler.
- Girişler
- Giriş1...GirişN
- Ağırlık (Sayı): Bu girişin seçilme olasılığını belirler; daha yüksek ağırlıklar seçilme şansını artırır.
- Özellikler
Özellik Tür Açıklama OynatmaSayısı Sayı Düğümün oynayacağı girişlerin sayısı. Belirtilen değere ulaştığında, düğüm son girişin döngüleme veya tutma ayarına saygı gösterir. Varsayılan 0 sonsuz için. Tohum Sayı Rastgele Sayı Üreticisini (RNG) başlamak için kullanılan bir değer, sıranın farklı istemciler arasında tutarlı olmasını sağlar. Varsayılan olarak -1 rastgele Tohumdur. - Etkinlik verisi
- Etkinlik Yönetimi: Mevcut aktif girişten gelen olaylar, ağırlıkları değişmeden geçer.
- Etkinlik Yayma: Rastgele sıra içinde yalnızca mevcut aktif girişten gelen tüm olayları geçer. Bir geçiş sırasında, etkinlik yayma küresel olay kurallarını takip eder.
Üzerinde

Üzerinde pozunu Temel pozunun üstüne katmanlar. Bir Maske düğümü ile birleştirildiğinde, Üzerinde pozundaki maske dışı eklemler, Temel pozunu tamamen açığa çıkarır, saydam bir overlay efekti yaratır.
- Girişler
- Temel: Arka plan veya alt katman, genellikle lokomotif veya duraksama durumunda bir tam vücut animasyonu.
- Üzerinde: Temelin üzerine uygulanacak ön plan veya üst katman, bir el hareketi veya alet kullanma animasyonu gibidir.
- Özellikler
Özellik Tür Açıklama Ağırlık Sayı Üzerinde pozunun azaltılmış ağırlığını kullanarak karışım. Varsayılan 1.0 (tam aşma) olup sınırlı değildir. - Etkinlik verisi
- Etkinlik Yönetimi:
- Düğüm, hem Temel hem de Üzerinde girişlerinden gelen olayları dinler.
- Etkinlik Yayma:
- Temel Olayları: Temel girişten gelen tüm olaylar değişmeden iletilir.
- Üzerinde Olayları: Üzerinde girişten gelen olaylar Ağırlık özelliğiyle ölçeklendirilir.
- Ağırlık 0.5 olduğunda, Üzerinde olayları yarım ağırlıkta yayılır
- Ağırlık 0 olduğunda, sessizleştirilir.
Ekle

Temel pozuna Ekleme pozunu ekleyerek, belirli bir Ağırlık ile azaltır (sınırlı değildir).
- Girişler
- Temel: Birincil animasyon pozisi.
- Ekleme: Temelin üzerine katmanlanacak pozisi.
- Özellikler
Özellik Tür Açıklama Ağırlık Sayı Temele uygulanan ekleme pozunun gücünü belirler. - Etkinlik verisi
- Etkinlik Yönetimi: Düğüm, hem Temel hem de Ekleme girişlerinden gelen olayları dinler.
- Etkinlik Yayma: Hem Temel hem de Ekleme girişlerinden gelen tüm olaylar değişmeden geçer.
Çıkar

Bir animasyonu, hedef pozdan ilişkili temel pozunu çıkartarak artırır (). Sonuç, belirli bir Ağırlıkla azaltılır (sınırlı değildir).
- Girişler
- A: Hedef animasyon pozisi.
- B: Çıkarılacak ilişkili temel pozisi.
- Özellikler
Özellik Tür Açıklama Ağırlık Sayı Sonuca uygulanan çıkarma etkisinin gücünü belirler. - Etkinlik verisi
- Etkinlik Yönetimi: Düğüm, hem Giriş A hem de Giriş B'den gelen olayları dinler.
- Etkinlik Yayma: Hem Giriş A hem de Giriş B'den gelen olaylar değişmeden geçer.
Karışım1D

Tek bir eksende en yakın iki animasyon pozisi arasında lineer interpolasyon yapar.
- Girişler
- Giriş1...GirişN
- Pozisyon (Sayı): Karışım eksenindeki her ardışık girişi belirten spesifik koordinat.
- Özellikler
Özellik Tür Açıklama Pozisyon Sayı Animasyonları örneklemek için kullanılan karışım eksenindeki mevcut aktif değerdir. Eğer Pozisyon, belirli giriş pozisyonları aralığının dışındaysa, düğüm en yakın iki girişi kullanarak dışarıdan tahmin yapar. FazSenkronizasyonu Enum.AnimationNodePhaseSync Alt düğümlerin zamanlarının senkronize edilip edilmeyeceğini ayarlar.
- Senkronize (varsayılan): Normalizasyonlu senkronizasyon. Düğüm, aktif girişlerin ağırlıklı ortalaması temelinde "sanallaştırılmış süre" hesaplar. Her giriş düğümü, tüm alt düğümlerin aynı faza ulaşacak şekilde zaman adımını ayarlamak için ayarlanır, böylece farklı uzunluklardaki animasyonlar uyumlu kalır.
- Senkronize Değil: Kliplerin bağımsız olarak kendi oynatma oranlarında ilerlediği standart karışım.
- Etkinlik verisi
- Etkinlik Yönetimi: Düğüm, tüm aktif alt düğümlerden gelen olayları dinler.
- Etkinlik Yayma: Yalnızca en yüksek ağırlıklı aktif girişi geçiyor, ona göre ölçeklendiriliyor. İkincil girişten gelen olaylar sessizleştiriliyor.
Karışım2D

İki giriş parametresine dayalı olarak birden fazla animasyon pozunu 2B koordinat alanında bir araya getirir. Bu, hem hareket yönü hem de hıza dayalı karmaşık senaryoları ele almak için Karışım1D düğümünü genelleştirir.
- Girişler
- Giriş1...GirişN
- X (Sayı): Her ardışık giriş için X-koordinatı.
- Y (Sayı): Her ardışık giriş için Y-koordinatı.
- Özellikler
Özellik Tür Açıklama GirişModu Enum.AnimationNodeBlend2DInputMode Karışım alanını değerlendirmek için kullanılan koordinat sistemini tanımlar:
- Kartezyen (varsayılan): Standart 2D grid koordinatlarını kullanır. X ve Y, karışım alanındaki mevcut konumu temsil eder.
- Kutuplar: Açı ve büyüklük değerlerini kullanır. X, radyan cinsinden yönü temsil ederken, Y hareketin büyüklüğünü veya gücünü temsil eder. Yön, büyüklükten daha fazla ağırlıklandırıldığı için, benzer açılardaki ama farklı büyüklüklerdeki girişler daha yumuşak bir şekilde karışır.
X Sayı Mevcut X-koordinatı (Kartezyen) veya Radyan cinsinden Yön (Kutuplar). Y Sayı Mevcut Y-koordinatı (Kartezyen) veya Büyüklük (Kutuplar). FazSenkronizasyonu Enum.AnimationNodePhaseSync Alt düğümlerin zamanlarının senkronize edilip edilmeyeceğini ayarlar.
- Senkronize (varsayılan): Normalizasyonlu senkronizasyon. Düğüm, aktif girişlerin ağırlıklı ortalaması temelinde "sanallaştırılmış süre" hesaplar. Her giriş düğümü, tüm alt düğümlerin aynı faza ulaşacak şekilde zaman adımını ayarlamak için ayarlanır, böylece farklı uzunluklardaki animasyonlar uyumlu kalır.
- Senkronize Değil: Kliplerin bağımsız olarak kendi oynatma oranlarında ilerlediği standart karışım.
- Etkinlik verisi
- Etkinlik Yönetimi: Düğüm, tüm aktif alt düğümlerden gelen olayları dinler.
- Etkinlik Yayma: Yalnızca en yüksek ağırlıklı aktif girişi geçiyor, ona göre ölçeklendiriliyor. İkincil girişten gelen olaylar sessizleştiriliyor.
Maske

Giriş Pozu için önceden tanımlanmış bir maske uygular. Maske, iskelet hiyerarşisindeki her nesne (örneğin eklem) için bir ağırlık ile tanımlanır, böylece animasyonun hassas kontrolü veya "hafifletilmesi" sağlanır.
- Girişler
- Poz: Maskelenmesi gereken animasyon pozu.
- Özellikler
Özellik Tür Açıklama Maske ObjectValue Maske ağırlıkları tanımlayan bir ObjectValue (Maske AnimationNodeDefinition'ın doğrudan bir çocuğu olarak oluşturulmuştur). Bu iki yolla işlev görebilir:
- Doğrudan: ObjectValue kendisi, işkemeler nesne adlarını belirli ağırlık değerlerine eşleyen nitelikleri içerir.
- Referansla: ObjectValue, haritalama niteliklerini içeren başka bir Instance'e referans verir. Bu, grafikteki farklı düğümler arasında paylaşılan maskelere olanak tanır.
Maskenizi oluştururken, hiyerarşiyi doldurmak için bir iskelet şemasını (HumanoidRigDescription veya Seçici) seçebilirsiniz.
- HumanoidRigDescription: Maskeyi insansı karakterler için standartlaştırır.
- Seçici: Kullanıcının maske hiyerarşisini doldurmak için çalışma alanındaki belirli bir iskeleti seçmesine izin verir.
Ters Boolean Doğru olduğunda, ağırlık değerlerini 1 - ağırlık olarak uygular. Bu, yeni bir varlık oluşturmadan ters bir maskeyi yeniden kullanmanıza olanak tanır. - Etkinlik verisi
- Etkinlik Yönetimi: Düğüm, giriş Poz'dan gelen tüm etkinlikleri dinler.
- Etkinlik Yayma: Giriş Poz'dan gelen tüm olaylar değişmeden geçer.
Hız

Gelen animasyon pozisinin oynatma hızını değiştirir.
- Girişler
- Poz: Oynatma hızının değiştirileceği animasyon pozu veya alt grafik.
- Özellikler
Özellik Tür Açıklama Hız Sayı Bir çarpan, zaman deltası () üzerinde uygulanır. 0.0 grafiği durdurur, 1.0 normal hızdır ve 2.0 iki kat hızdır. - Etkinlik verisi
- Etkinlik Yönetimi: Düğüm, giriş Poz'dan gelen olayları dinler.
- Etkinlik Yayma: Giriş Poz'dan gelen tüm olaylar değişmeden geçer. Görsel oynatma hızı değişse de, yayımlanan olayların zamanlaması (örneğin işaretleyiciler) değiştirilmiş oynatma hızında uygun şekilde ölçeklenecektir.
GrafikÇıkışı

Grafiğin son değerlendirilmiş pozunu temsil eder. Bu düğüm, Animasyon Grafiği Düzenleyicisinde tüm yeni grafiklerde otomatik olarak dahil edilir. Varlığı, grafiğin her zaman geçerli olmasını ve tutarlı bir animasyon pozunu üretmesini sağlar.
- Girişler
- Poz: İskelete uygulanacak son işlenmiş animasyon verisi.
- Özellikler
- Yok
- Etkinlik verisi
- Etkinlik Yönetimi: Düğüm, son bağlı girişten geçirilen tüm olayları dinler.
- Etkinlik Yayma: Bu düğüm, animasyon boru hattındaki çıkış noktasıdır ve grafiğe sinyalleri geri yaymaz.
Geçişler
Animasyon Grafiğindeki birkaç düğüm (örneğin Seç, Öncelik Seç, Ardışık, ve Rastgele Sıra) etkin girişler arasında geçiş yapıldığında animasyonların nasıl karıştığını yönetir. Düğüm referansındaki gereksizliği önlemek için, bu davranışlar standart geçiş özelliği gruplarıyla tanımlanmıştır.
Varsayılan geçiş

Bir düğüm yeni bir aktif girişi geçiş yaptığında uygulanan temel karışım davranışı.
- VarsayılanGeçişSüresi (sayı): Yeni pozu tam olarak karıştırmak için gereken süre (saniye cinsinden).
- VarsayılanGeçişEğrisi (Enum.PoseEasingStyle): Karışım sırasında uygulanan kolaylaştırma işlevi. Şu anda sadece Enum.PoseEasingStyle.Linear ve Enum.PoseEasingStyle.CubicV2 desteklenmektedir.
Geçiş iptali
Varsayılan geçişi geçersiz kılan girişle ilgili bağlantı özellikleri. Düğüm, o belirli girişi geçiş yaptığında uygulanır.
- GeçişIptalSüresi (sayı): Varsayılan geçiş süresini geçersiz kılar.
- GeçişIptalEğrisi (Enum.PoseEasingStyle): Varsayılan geçiş eğrisini geçersiz kılar. Şu anda sadece Enum.PoseEasingStyle.Linear ve Enum.PoseEasingStyle.CubicV2 desteklenmektedir.
Çoğaltma
Animasyon grafiği parametreleri her AnimationTrack için yereldir ve otomatik olarak çoğaltılmaz. Bu gelecekteki güncellemelerde değişebilir, ancak mevcut önerilen yaklaşım şunları kullanır:
- İstemci → Sunucu: Bir RemoteEvent, parametreleri sahibi istemciden sunucuya sabit bir atış hızıyla gönderir.
- Sunucu → Diğer İstemciler: Tüm istemcilere otomatik olarak çoğaltılan örnek nitelikleri.
Oyun karakterleri
Bir istemci betiği oyuncu karakterlerini yönetir. Sadece sahibi istemci mevcut oyun durumu (hareket girişi, insansı durum vb.) hakkında bilgi sahibi olduğundan, parametrelerin sahibi istemciden sunucuya ve ardından diğer istemcilere akması gerekir.
Kurulum
StarterCharacterScripts altında, şunları oluşturun:
- İstemci tarafında animasyon ve parametre sürüşü için bir LocalScript.
- Sunucu tarafında çoğaltma için bir Script.
- İstemci-sunucu iletişimi için bir RemoteEvent.
İstemci betiği
Sahip istemci, oyun olaylarından parametreleri sürer ve bunları belirli aralıklarla sunucuya gönderir. Diğer istemciler, sunucu betiğinden çoğaltılmış nitelikleri okur.
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:FindFirstChildOfClass("Animator") or humanoid
-- Animasyon grafiğini yükle
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://YOUR_GRAPH_ID" -- Yayınlanan grafik kimliğiniz ile değiştirin
local track = animator:LoadAnimation(animation)
track:Play()
local isLocalCharacter = Players:GetPlayerFromCharacter(character) == Players.LocalPlayer
if not isLocalCharacter then
-- Sunucu betiğinden çoğaltılan parametreleri okuyun
local animateServer = script.Parent:WaitForChild("AnimateServer")
for attribute, value in animateServer:GetAttributes() do
track:SetParameter(attribute, value)
end
animateServer.AttributeChanged:Connect(function(attribute)
track:SetParameter(attribute, animateServer:GetAttribute(attribute))
end)
return
end
-- Yerel oyuncu: oyun olaylarından parametreleri sürüyoruz
local params = {}
local function setParam(key, value)
track:SetParameter(key, value)
params[key] = value
end
-- Örnek: insansı duruma göre parametreleri sür
humanoid.Running:Connect(function(speed)
setParam("Hız", speed)
setParam("Durum", if speed < 0.1 then "Duraklama" else "Hareket Etme")
end)
-- Sabit bir atış hızında sunucuya parametreleri gönderin
local replicateEvent = script.Parent:WaitForChild("ReplicateEvent")
local TICK_RATE = 1 / 20
local lastSendTime = 0
RunService.Stepped:Connect(function(gameTime)
if gameTime - lastSendTime > TICK_RATE then
lastSendTime = gameTime
replicateEvent:FireServer(params)
end
end)
Sunucu Betiği
Sahip istemciden parametreleri alır, sunucu tarafındaki animasyon grafiğini sürer ve değerleri diğer istemcilere çoğaltılmak üzere niteliklere yayar.
local Players = game:GetService("Players")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:FindFirstChildOfClass("Animator") or humanoid
-- Sunucuda aynı animasyon grafiğini yükle
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://YOUR_GRAPH_ID" -- İstemcideki ile aynı grafik kimliği
animation.Parent = script
local track = animator:LoadAnimation(animation)
track:Play()
-- Sahip istemciden parametreleri alın ve nitelikler aracılığıyla çoğaltın
local replicateEvent = script.Parent:WaitForChild("ReplicateEvent")
replicateEvent.OnServerEvent:Connect(function(player, params)
if Players:GetPlayerFromCharacter(character) ~= player then
return
end
for key, value in params do
track:SetParameter(key, value)
script:SetAttribute(key, value)
end
end)
NPC'ler
Sunucu, NPC animasyonunu sahip olduğu için yalnızca sunucudan istemciye çoğaltma gerekir. Sunucuda animasyon grafiğini sürün, sunucu Betiğinde parametreleri nitelikler olarak yazın ve istemcilerde yukarıda gösterilen aynı Instance.AttributeChanged desenini kullanarak okuyun.
Gecikme
Diğer istemciler animasyonları, atış aralığı (20 Hz’de 50 ms’ye kadar) artı ağ gecikmesi kadar küçük bir gecikme ile görür. İşlemci yükünü artırmadan daha yüksek ağ trafiği ile maliyetini düşürmek için atış aralığını artırarak azaltabilirsiniz. 20 Hz makul bir varsayılandır; animasyon karışımı o kadar hoşgörülüdür ki küçük gecikmeler fark edilmiyor.