Bir animasyon oluşturduktan sonra, bunları oyununuzda kullanmak için betikler kullanmalısınız. Animasyonları betikler aracılığıyla manuel olarak oynatabilirsiniz veya oyuncu karakterleri için varsayılan animasyonları değiştirebilirsiniz.
Betiklerden Animasyon Oynatma
Bazı durumlarda, bir animasyonu doğrudan bir betikten oynatmanız gerekir; örneğin, bir kullanıcı belirli bir tuşa bastığında veya özel bir nesne aldığında.
İnsanlar
Humanoid nesnesi içeren bir yapı üzerinde bir animasyon oynatmak için, tipik oynanabilir karakterler gibi, bu temel kalıbı izleyin:
- Uygun AnimationId ile yeni bir Animation örneği oluşturun.
- Animasyonu Animator:LoadAnimation() aracılığıyla yükleyin ve bir AnimationTrack oluşturun.
- İzleme işlemini AnimationTrack:Play() ile oynatın.
Örneğin, aşağıdaki LocalScript, StarterPlayerScripts içerisine yerleştirildiğinde, oyuncunun karakterine bir "tekme" animasyonu yükler ve oynatır. Betik ayrıca belirli bir animasyon olayının meydana geldiğini algılamak için GetMarkerReachedSignal() yöntemini kullanır.
LocalScript - Oyuncu Karakterinde Özel Animasyon Oynatma
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- Karakterin humanoid'inin "Animator" nesnesi içerdiğinden emin olun
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- Yeni bir "Animation" örneği oluşturun ve bir animasyon varlık ID'si atayın
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Animasyonu animatöre yükleyin
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Animasyon için adlandırılmış bir olayı tanımladıysanız, "GetMarkerReachedSignal()" ile bağlayın
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Animasyon izleme işlemini oynat
kickAnimationTrack:Play()
İnsan Dışı
Humanoid nesnesi içermeyen yapıların üzerinde animasyon oynamak istiyorsanız, bir AnimationController oluşturmalı ve bir Animator eklemelisiniz. Örneğin, aşağıdaki Script (yapının doğrudan çocuğu olduğu varsayılmaktadır) bir "tekme" animasyonu yükler ve oynatır.
Script - Karakter Yapısında Özel Animasyon Oynatma
local rig = script.Parent
-- Yeni bir "Animation" örneği oluşturun ve bir animasyon varlık ID'si atayın
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Yeni bir "AnimationController" ve "Animator" oluşturun
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- Animasyonu animatöre yükleyin
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Animasyon için adlandırılmış bir olayı tanımladıysanız, "GetMarkerReachedSignal()" ile bağlayın
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Animasyon izleme işlemini oynat
kickAnimationTrack:Play()
Varsayılan Animasyonları Değiştirme
Varsayılan olarak, Roblox oyuncu karakterleri koşma, tırmanma, yüzme ve zıplama gibi yaygın animasyonları içerir. Bu varsayılan animasyonları, katalogdan veya kendi özel animasyonlarınızla değiştirebilirsiniz.
Yeni animasyonun varlık ID'sini aşağıdaki gibi elde edin:
- Animasyon Editörü ile oluşturulmuş özel bir animasyon için dışa aktarma talimatlarını takip edin.
- Aşağıdaki katalog animasyon referansı arasından uygun bir ID kopyalayın. Örneğin, varsayılan koşu animasyonunu Ninja Run varyantıyla değiştirmek için 656118852 kullanın.
Yeni betiğe şu kodu yapıştırın:
Script - Varsayılan Karakter Animasyonlarını Değiştirmelocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Humanoid içinde animatörü alınlocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Tüm animasyon izlemelerini durdurfor _, playingTrack in animator:GetPlayingAnimationTracks() doplayingTrack:Stop(0)endlocal animateScript = character:WaitForChild("Animate")--animateScript.run.RunAnim.AnimationId = "rbxassetid://"--animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"--animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"--animateScript.idle.Animation1.AnimationId = "rbxassetid://"--animateScript.idle.Animation2.AnimationId = "rbxassetid://"--animateScript.fall.FallAnim.AnimationId = "rbxassetid://"--animateScript.swim.Swim.AnimationId = "rbxassetid://"--animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"--animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)Her bir varsayılan karakter animasyonu referansına başvuran satır için, yorumunu kaldırın ve rbxassetid:// ifadesinden sonra değiştirme ID'sini yapıştırın. Örneğin, varsayılan koşu animasyonunu Ninja Run varyantına değiştirmek için:
Script - Varsayılan Karakter Animasyonlarını Değiştirmelocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Humanoid içinde animatörü alınlocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Tüm animasyon izlemelerini durdurfor _, playingTrack in animator:GetPlayingAnimationTracks() doplayingTrack:Stop(0)endlocal animateScript = character:WaitForChild("Animate")animateScript.run.RunAnim.AnimationId = "rbxassetid://656118852"--animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"--animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"--animateScript.idle.Animation1.AnimationId = "rbxassetid://"--animateScript.idle.Animation2.AnimationId = "rbxassetid://"--animateScript.fall.FallAnim.AnimationId = "rbxassetid://"--animateScript.swim.Swim.AnimationId = "rbxassetid://"--animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"--animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)
Animasyon Ağırlıklarını Belirleme
Aynı eylem için birden fazla animasyon kullanabilirsiniz. Örneğin, varsayılan animasyonları değiştirme kod örneğinde iki idle varyasyonu bulunmaktadır.
Bir karakter durumu için birden fazla animasyon mevcut olduğunda, Animate betiği rastgele hangi animasyonun oynatılacağını seçer. Ancak, animasyonun Weight değerini aşağıdaki formül ile belirleyerek sonucu etkileyebilirsiniz:
- animasyon ağırlığı / tüm durum animasyonlarının toplam ağırlığı
Aşağıda verilen örnekte, idle.Animation1 karakterin durduğu süre boyunca ⅓ oranında, idle.Animation2 ise ⅔ oranında oynayacaktır.
Script - Varsayılan Karakter Animasyonlarını DeğiştirmeanimateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"animateScript.idle.Animation1.Weight.Value = 5animateScript.idle.Animation2.Weight.Value = 10
Animasyon Referansları
Varsayılan Karakter Animasyonları
Aşağıdaki tablo, varsayılan animasyonları katalog animasyonları veya kendi özel animasyonlarınızla değiştirebileceğiniz tüm varsayılan karakter animasyonlarını içerir. Idle animasyonunun daha sık veya daha az oynatılması için iki varyasyonu olduğunu unutmayın.
| Karakter eylemi | Animasyon betiği referansı |
| Koşu | animateScript.run.RunAnim.AnimationId |
| Yürüyüş | animateScript.walk.WalkAnim.AnimationId |
| Zıplama | animateScript.jump.JumpAnim.AnimationId |
| Dolaşma | animateScript.idle.Animation1.AnimationId |
| Düşme | animateScript.fall.FallAnim.AnimationId |
| Yüzme | animateScript.swim.Swim.AnimationId |
| Yüzme (Dolaşma) | animateScript.swimidle.SwimIdle.AnimationId |
| Tırmanma | animateScript.climb.ClimbAnim.AnimationId |
Katalog Animasyonları
Varsayılan animasyonları değiştirmek için avatar animasyon paketlerini kullanırken, ilgili varlık ID'leri için aşağıdaki referansları kullanın. Örneğin, Ninja Jump animasyonunu uygulamak için 656117878 kullanın. Idle animasyonunun birden fazla varyasyonu olduğunu unutmayın.
| Astronot | Koşu 891636393 Yürüyüş 891636393 Zıplama 891627522 Dolaşma 891621366, 891633237, 1047759695 Düşme 891617961 Yüzme 891639666 Yüzme (Dolaşma) 891663592 Tırmanma 891609353 |
| Havalı | Koşu 910025107 Yürüyüş 910034870 Zıplama 910016857 Dolaşma 910004836, 910009958, 1018536639 Düşme 910001910 Yüzme 910028158 Yüzme (Dolaşma) 910030921 Tırmanma 909997997 |
| Karikatür | Koşu 742638842 Yürüyüş 742640026 Zıplama 742637942 Dolaşma 742637544, 742638445, 885477856 Düşme 742637151 Yüzme 742639220 Yüzme (Dolaşma) 742639812 Tırmanma 742636889 |
| Yaşlı | Koşu 845386501 Yürüyüş 845403856 Zıplama 845398858 Dolaşma 845397899, 845400520, 901160519 Düşme 845396048 Yüzme 845401742 Yüzme (Dolaşma) 845403127 Tırmanma 845392038 |
| Şövalye | Koşu 657564596 Yürüyüş 657552124 Zıplama 658409194 Dolaşma 657595757, 657568135, 885499184 Düşme 657600338 Yüzme 657560551 Yüzme (Dolaşma) 657557095 Tırmanma 658360781 |
| Havada Durma | Koşu 616010382 Yürüyüş 616013216 Zıplama 616008936 Dolaşma 616006778, 616008087, 886862142 Düşme 616005863 Yüzme 616011509 Yüzme (Dolaşma) 616012453 Tırmanma 616003713 |
| Büyücü | Koşu 707861613 Yürüyüş 707897309 Zıplama 707853694 Dolaşma 707742142, 707855907, 885508740 Düşme 707829716 Yüzme 707876443 Yüzme (Dolaşma) 707894699 Tırmanma 707826056 |
| Ninja | Koşu 656118852 Yürüyüş 656121766 Zıplama 656117878 Dolaşma 656117400, 656118341, 886742569 Düşme 656115606 Yüzme 656119721 Yüzme (Dolaşma) 656121397 Tırmanma 656114359 |
| Korsan | Koşu 750783738 Yürüyüş 750785693 Zıplama 750782230 Dolaşma 750781874, 750782770, 885515365 Düşme 750780242 Yüzme 750784579 Yüzme (Dolaşma) 750785176 Tırmanma 750779899 |
| Robot | Koşu 616091570 Yürüyüş 616095330 Zıplama 616090535 Dolaşma 616088211, 616089559, 885531463 Düşme 616087089 Yüzme 616092998 Yüzme (Dolaşma) 616094091 Tırmanma 616086039 |
| Rthro | Koşu 2510198475 Yürüyüş 2510202577 Zıplama 2510197830 Dolaşma 2510197257, 2510196951, 3711062489 Düşme 2510195892 Yüzme 2510199791 Yüzme (Dolaşma) 2510201162 Tırmanma 2510192778 |
| Şık | Koşu 616140816 Yürüyüş 616146177 Zıplama 616139451 Dolaşma 616136790, 616138447, 886888594 Düşme 616134815 Yüzme 616143378 Yüzme (Dolaşma) 616144772 Tırmanma 616133594 |
| Süper Kahraman | Koşu 616117076 Yürüyüş 616122287 Zıplama 616115533 Dolaşma 616111295, 616113536, 885535855 Düşme 616108001 Yüzme 616119360 Yüzme (Dolaşma) 616120861 Tırmanma 616104706 |
| Oyuncak | Koşu 782842708 Yürüyüş 782843345 Zıplama 782847020 Dolaşma 782841498, 782845736, 980952228 Düşme 782846423 Yüzme 782844582 Yüzme (Dolaşma) 782845186 Tırmanma 782843869 |
| Vampir | Koşu 1083462077 Yürüyüş 1083473930 Zıplama 1083455352 Dolaşma 1083445855, 1083450166, 1088037547 Düşme 1083443587 Yüzme 1083464683 Yüzme (Dolaşma) 1083467779 Tırmanma 1083439238 |
| Kurt Adam | Koşu 1083216690 Yürüyüş 1083178339 Zıplama 1083218792 Dolaşma 1083195517, 1083214717, 1099492820 Düşme 1083189019 Yüzme 1083222527 Yüzme (Dolaşma) 1083225406 Tırmanma 1083182000 |
| Zombi | Koşu 616163682 Yürüyüş 616168032 Zıplama 616161997 Dolaşma 616158929, 616160636, 885545458 Düşme 616157476 Yüzme 616165109 Yüzme (Dolaşma) 616166655 Tırmanma 616156119 |