Karakter animasyonları oynat

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

Karakter animasyonları oynatmak avatarları ve oynanamayan karakterleri (NPC'ler) ifade edici, gerçekçi ve izleyicilerinize çekici hale getiren önemli bir parçasıdır.Sürükleyici görüntüler sağlamanın yanı sıra, karakter animasyonları oyunculara eylemlerinden geri bildirim, çevreyi nasıl gezineceklerine dair rehberlik ve karakterleri ve diğerleri hakkında hayati bilgiler sağlar.

Tehlikeli Uzay İstasyonu dosyasını bir referans olarak kullanarak, bu eğitim size iki farklı teknik, yönlendirme dahil karakter animasyonları nasıl oynayacağınızı gösterir:

  • Kendi özel animasyonlarınızla varsayılan karakter animasyonu özniteliklerini değiştirme.
  • 3B uzayındaki karakter eylemlerine yanıt olarak animasyonları tetiklemek.

Bu eğitimi tamamladıktan sonra, çok çeşitli oyun durumları için animasyonları özelleştirecek becerilere sahip olacaksınız.

Varsayılan animasyonları değiştir

Varsayılan bir Humanoid nesneye sahip her karakter, oyuncunun kontrol ettiği bir avatar veya oyuncu olmayan bir karakter (NPC) olsa, karakter belirli deneyim eylemlerini gerçekleştirdiğinde çalan bir dizi varsayılan animasyon içerir, örneğin koşmak, tırmanmak ve atlamak gibi.Roblox, bu animasyonları herhangi bir ek kodlama çabası olmadan her deneyim için kutudan dışarı verir.

Varsayılan Düşme Animasyonu
Varsayılan Yüzme Animasyonu
Varsayılan Tırmanma Animasyonu

Ancak, bu varsayılan animasyonlar dünyanızın çevresi, estetiği veya genel hikayesi için tasarım gereksinimlerini karşılamıyorsa, deneyiminize katılan her oyuncuya özel animasyonlarla değiştirebilirsiniz.Bu oyun tasarım tekniği, karakterlerinizin ve deneyimlerinizin daha kişisel, etkileyici ve sürükleyici hissetmesine yardımcı olabilir.

Göstermek için, aşağıdaki bölüm size varsayılan yürüme animasyonunu özel bir yürüme döngüsü animasyonuyla nasıl değiştireceğinizi öğretir Karakter Animasyonları Oluştur .Aynı süreci kullanarak, varsayılan animasyonlardan herhangi birini kendi animasyon varlıklarınızla değiştirebilirsiniz.

Varsayılan Yürüme Animasyonu
Özel Yürüme Animasyonu

Senaryo oluştur

Her karakterin Humanoid nesnesi, karakterin tüm varsayılan animasyonlarını depolayan bir çocuk Animator nesnesi içerir.Bu varsayılan animasyonlardan herhangi birini yeni varlık kimliklerine ayarlamak için, oyuncular deneye yüklendiğinde referans olabilmesi ve varsayılan değerleri geçersiz kılabilmesi için bir senaryo oluşturmalısınız, böylece oyuncular deneye yüklendiğinde varsayılan değerleri referans alabilir ve geçersiz kılabilir.

Varsayılan animasyon özniteliklerini referans alacak bir senaryo oluşturmak için:

  1. Gezgini penceresinde, ServerScriptService 'e yeni bir senaryo ekleyin.

    1. Sunucu Kript Hizmeti üzerine gelin ve ⊕ düğmesine tıklayın.
    2. Kontekst menüsünden, bir Kript ekleyin.
  2. Yeni senaryoda, aşağıdaki kodu yapıştırın:


    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animator found!")
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

The ResetDefaultAnimations script, bir oyuncu bir sunucuya bağlandığında tüm Players nesneleri içeren Player hizmetini alarak başlar.Oyuncunun karakterlerinin her biri deneyime yüklendiğinde, onCharacterAdded fonksiyonu karakterin Humanoid ve Animator nesnelerini algılayana kadar bekler.

İlk kez bir Animator nesnesi tespit ettiğinde, senaryo ardından "Animatör bulundu!" yazdırarak senaryonun hedeflendiği gibi çalıştığını bildirir.

assetID'yi değiştirin

Artık senaryonuzun oyuncuların sunucuya yüklendiğini ve bağlandığını tespit edebildiğini bildiğinize göre, kendi özel özel animasyonlarınızla değiştirmek istediğiniz animasyon ID'lerini özellikle referans olarak değiştirebilirsiniz.

Aşağıdaki tablo, Animator nesnesi içinde çağırıp değiştirebileceğiniz tüm varsayılan karakter animasyonlarını içerir.Boşluk'un daha az veya daha sık oynamak için programlayabileceğiniz iki değişikliği olduğunu unutmayın.

Karakter EylemiAnimasyon Kılavuzu Referansı
Koş animateScript.run.RunAnim.AnimationId
Yürümek animateScript.walk.WalkAnim.AnimationId
Zıplama animateScript.jump.JumpAnim.AnimationId
Boş

animateScript.idle.Animation1.AnimationId``animateScript.idle.Animation2.AnimationId

Düşme animateScript.fall.FallAnim.AnimationId
Yüzün

animateScript.swim.Swim.AnimationId

Yüzme (Boşluk)

animateScript.swimidle.SwimIdle.AnimationId

Tırmanma animateScript.climb.ClimbAnim.AnimationId

Varsayılan yürüme animasyonu assetID'sini değiştirmek için:

  1. Varsayılan yürüme animasyon kılavuzunu çağırın, ardından varlıkID'yi kendi özel animasyon varlığınızla değiştirin.Örneğin, aşağıdaki kod örneği Karakter Animasyonları Oluştur 'dan yürüme döngüsü animasyonuna referans verir.


    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animator found!")
    local animateScript = character:WaitForChild("Animate")
    animateScript.walk.WalkAnim.AnimationId = "rbxassetid://122652394532816"
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. Özel yürüme animasyonunuzun varsayılan animasyonu geçmesini sağlamak için deneyiminizi test edin.

    1. Araç çubuğunda, Oyna düğmesine tıklayın. Studio oyun testi moduna girer.

      Play button highlighted in Studio's playtesting options.
    2. Avatarınızla uzay istasyonunun etrafında dolaşın.

Animasyonları tetikle

Önceki teknik, herhangi bir karakterin belirli deneyim eylemleri yaptığında otomatik olarak oynayan varsayılan animasyonları değiştirmeye odaklanırken, 3B uzayındaki herhangi bir karakterin eylemine yanıt olarak animasyonları programatik olarak tetikleyebilirsiniz, örneğin bir eşya almak veya bir tehlikeden zarar görmek.

Bu örnekte, oyuncular altın platforma dokunduklarında, varsayılan olmayan bir karakter dans animasyonu tetiklerler.

Animasyon oynatma yöntemi bu, çünkü oyunculara çevrelerindeki nesnelerle nasıl etkileşim kurmaları gerektiğine dair anlık geri bildirim sağlar.Göstermek için, aşağıdaki bölüm, karakterler tehlikeli buhar sızıntılarına çok yakın olduklarında nasıl bir animasyon tetikleyeceğinizi gösterir, böylece oyuncular duvarlara çok yakın gitmekten kaçınmayı öğrenir.

Ses ekleyin

Eşsiz oyun davranışını tetiklemek için en yaygın yolların biri, karakterlerin veya nesnelerin çevredeki belirli alanlarla etkileşime girdiğini tespit etmek için hacimleri veya 3B uzaydaki görünmez bölgeleri kullanmaktır.Hacimleri senaryolarla eşleştirdiğinizde, oyuncunun sağlığını azaltmak veya bir animasyon oynamak gibi eylemleri otomatik olarak tetiklemek için çarpışma geri bildirimini kullanabilirsiniz.

A far out view of a mansion room. An outline of a box is in the middle of the room to signify the volume that triggers gameplay events.
Duvall Sürücüsünün Gizemi, odayı görsel olarak değiştiren oyun etkinliklerini tetiklemek için hacimleri kullanır.

Deneyiminize bir ses eklerken, animasyonu tetiklemek istediğiniz alanı kapsayacak şekilde ölçeklendirmek önemlidir.Sesinizi çok küçük yaparsanız, oyuncular animasyonu oynamak için bölgeyle asla çarpışmayabilir; aksine, sesinizi çok büyük yaparsanız, animasyon oyuncular bir öğeye veya ilgi alanına ulaşana kadar oynayacak ve animasyonu tetiklemek için ne yaptıklarını anlayamayabilirler.

Bir animasyonu tetikleyecek bir buhar sızıntısının etrafına bir hacim eklemek için:

  1. Kâşif penceresinde, yeni bir blok parçası ekleyin.
  2. Animasyonu tetiklemek istediğiniz alanı kapsayana kadar blokun konumunu ve boyutunu değiştirin.
  3. Özellikler penceresinde,
    1. İsmi AnimasyonDetektörü 'ye ayarlayın.

    2. Blokun görünmez olması için Saydamlık seviyesine ayarlayın.

      An outline of a block is visible around a steam vent to signify the position of the volume.

Senaryo oluştur

Animasyonunuzu tetiklemek için tanımlanmış bir bölgeye sahip olduğunuza göre, oyuncuların herhangi bir zamanda ses ile çarpıştığını programatik olarak algılayan bir senaryo oluşturma zamanı geldi.Ardından oyun ihtiyaçlarınız için mantıklı herhangi bir animasyon tetiklemek için çarpışma olaylarını dinleyebilirsiniz.

Örneğin, bu animasyon tekniği, oyuncuların ses ile çarpıştığında anlık geri bildirim sağlamak için bir LocalScript yerine Script kullanır.Sunucu çarpışmayı dinler ve animasyonu oynarsa, oyuncunun klibine dokunması ve animasyonun oynanmasının ardından sunucudan klibe yapılan yeniden yazma süresi nedeniyle bir gecikme olabilir.

Yerel oyuncunun karakteri seslendiğinde tespit edecek yerel bir senaryo oluşturmak için:

  1. Gezgini penceresinde, yeni bir senaryo ekleyin Başlangıç Karakterleri Senaryolarına .Bu yerleştirme, senaryo ve yavrularının oyuncu karakterine katılmasını sağlar ve deneye geri döndüklerinde.

    1. Genişlet Başlangıç Oyuncusu , ardından çocuğunun Başlangıç Karakter Senaryoları üzerine gezin ve ⊕ düğmesine tıkla.
    2. Kontekst menüsünden, bir YerelScript ekleyin ve adını TetiklemeAnimasyonu olarak değiştirin.
  2. Yeni senaryoda, aşağıdaki kodu yapıştırın:


    local Workspace = game:GetService("Workspace")
    local animation = script:WaitForChild("Animation")
    local humanoid = script.Parent:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    local animationTrack = animator:LoadAnimation(animation)
    local animationDetector = Workspace:WaitForChild("AnimationDetector")
    local debounce = false
    animationDetector.Touched:Connect(function(hit)
    if debounce then
    return
    end
    local hitCharacter = hit:FindFirstAncestorWhichIsA("Model")
    if hitCharacter ~= localCharacter then
    return
    end
    debounce = true
    animationTrack:Play()
    animationTrack.Ended:Wait()
    debounce = false
    end)

The TriggerAnimation kript yazılımı, 3B dünyada var olan tüm nesneleri içeren Workspace hizmeti alarak başlar.Bu önemlidir çünkü senaryo, hacminiz olarak hareket eden Part nesneye referans vermelidir.

Deneyime geri yüklenen veya yeniden doğan her oyuncu karakteri için, senaryo şunu bekler:

  • Onun çocuğu Animation nesnesi, bir sonraki bölüme ekleyeceğiniz nesne.
  • Karakterin Humanoid ve Animator nesneleri.
  • AnimasyonDetektörü adlı çalışma alanındaki ses nesnesi.

Herhangi bir şey ses ile çakıştığında, Touched etkinlik işleyici işlevi, ses ile çakışan Model karakterin ilk atasını alır, ki bu karakter modelünden bir çocuk olan karakter olmalıdır, eğer ses ile çakışan BasePart karakter bir karakter modelinin bir soyundur.Eğer öyleyse, işlev daha sonra ın yerel oyuncunun karakteri olup olmadığını kontrol eder.Eğer öyleyse, işlev sonra:

  • Debounce'u true 'ye ayarlar.
  • Animasyonun bitmesini bekler ve oynar.
  • Debounce'u false 'ye geri ayarlar.

Animasyon oynatıldıktan sonra animasyonun tekrar tekrar tetiklenmesini engelleyen false debounce ayarından true``false animasyon bitince tekrar oynatmak, animasyonun oyuncuların sürekli olarak ses seviyesine çarptığında tekrar tetiklenmesini engelleyen bir debounce modelidir.Bu gecikme modeli hakkında daha fazla bilgi için, çarpışmaları algıla bakın.

Animasyon ekleyin

Deneyiminizi hemen şimdi test etseniz, TriggerAnimation kodunuz yerel oyuncu-volüm çarpışmasına yanıt olarak bir animasyon oynatamayacaktır.Bunun nedeni, bir animasyon özniteliği ile beklediği bir çocuk Animation nesnesi ve bu nesne şu anda mevcut değil, çünkü Animation nesne.

Yerel senaryo için bir animasyon eklemek ve oyuncuların ses ile çarpışmasıyla referans olmak için:

  1. Gezgin penceresinde, yeni bir animasyon ekleyin TetiklemeAnimasyonu 'ya.

    1. Tetikleme Animasyonu üzerine gelin ve ⊕ düğmesine tıklayın.
    2. Kontekst menüsünden, bir Animasyon ekleyin.
  2. Yeni animasyon nesnesini seçin, ardından Özellikler penceresinde, oyuncular hacme dokunduğunda tetiklemek istediğiniz animasyon varlığına AnimasyonID ayarlayın.Örneğin, Tehlikeli Uzay İstasyonu örnek referansları rbxassetid://3716468774 oynar.

  3. Oyuncular ilk buhar sızıntısının yakınında olduklarında animasyonunuzun çalışmasını sağlamak için deneyiminizi test edin.