Khi bạn đã tạo ra một hoạt ảnh, bạn cần sử dụng các kịch bản để đưa chúng vào trò chơi của bạn. Bạn có thể phát hoạt ảnh tùy ý từ các kịch bản hoặc thay thế các hoạt ảnh mặc định cho các nhân vật người chơi.
Phát hoạt ảnh từ các kịch bản
Trong một số trường hợp, bạn sẽ cần phát một hoạt ảnh trực tiếp từ bên trong một kịch bản, chẳng hạn như khi một người dùng nhấn một phím cụ thể hoặc nhặt một vật phẩm đặc biệt.
Nhân vật hoạt hình
Để phát một hoạt ảnh trên một khung chứa một đối tượng Humanoid, chẳng hạn như các nhân vật có thể chơi thông thường, hãy làm theo mẫu cơ bản này:
- Tạo một thể hiện Animation mới với AnimationId phù hợp.
- Tải hoạt ảnh thông qua Animator:LoadAnimation() để tạo ra một AnimationTrack.
- Phát bản nhạc với AnimationTrack:Play().
Ví dụ, LocalScript sau đây, khi được đặt trong StarterPlayerScripts, sẽ tải một hoạt ảnh "đá" vào nhân vật của người chơi và phát nó. Kịch bản cũng sử dụng phương thức GetMarkerReachedSignal() để phát hiện khi một sự kiện hoạt ảnh cụ thể xảy ra.
LocalScript - Phát Hoạt Ảnh Tùy Chỉnh trên Nhân Vật Người Chơi
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- Đảm bảo rằng nhân vật có humanoid chứa một đối tượng "Animator"
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- Tạo một thể hiện "Animation" mới và gán một ID tài sản hoạt ảnh
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Tải hoạt ảnh vào animator
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Nếu một sự kiện có tên được định nghĩa cho hoạt ảnh, kết nối nó với "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Phát bản nhạc hoạt ảnh
kickAnimationTrack:Play()
Không phải nhân vật hoạt hình
Để phát các hoạt ảnh trên các khung không chứa Humanoid, bạn phải tạo một AnimationController với một Animator con. Ví dụ, Script sau đây (giả định là con trực tiếp của khung) sẽ tải một hoạt ảnh "đá" và phát nó.
Script - Phát Hoạt Ảnh Tùy Chỉnh trên Khung Nhân Vật
local rig = script.Parent
-- Tạo một thể hiện "Animation" mới và gán một ID tài sản hoạt ảnh
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Tạo một "AnimationController" mới và "Animator"
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- Tải hoạt ảnh vào animator
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Nếu một sự kiện có tên được định nghĩa cho hoạt ảnh, kết nối nó với "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Phát bản nhạc hoạt ảnh
kickAnimationTrack:Play()
Thay thế các hoạt ảnh mặc định
Mặc định, các nhân vật người chơi trong Roblox bao gồm các hoạt ảnh thông dụng như chạy, leo trèo, bơi lội và nhảy. Bạn có thể thay thế các hoạt ảnh mặc định này bằng các hoạt ảnh từ catalog hoặc với các hoạt ảnh tùy chỉnh của riêng bạn.
Lấy ID tài sản của hoạt ảnh mới như sau:
- Đối với một hoạt ảnh tùy chỉnh được tạo bằng Animation Editor, hãy làm theo hướng dẫn xuất.
- Sao chép một ID phù hợp từ tham chiếu hoạt ảnh catalog dưới đây. Ví dụ, để thay thế hoạt ảnh chạy mặc định bằng biến thể Ninja Run, sử dụng 656118852.
Trong kịch bản mới, dán mã sau:
Script - Thay Thế Hoạt Ảnh Nhân Vật Mặc Địnhlocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Lấy animator trên humanoidlocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Dừng tất cả các bản nhạc hoạt ảnhfor _, 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)Đối với mỗi dòng tham chiếu đến một hoạt ảnh nhân vật mặc định, hãy bỏ chú thích và dán ID thay thế sau rbxassetid://. Ví dụ, để thay đổi hoạt ảnh chạy mặc định thành biến thể Ninja Run:
Script - Thay Thế Hoạt Ảnh Nhân Vật Mặc Địnhlocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Lấy animator trên humanoidlocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Dừng tất cả các bản nhạc hoạt ảnhfor _, 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)
Đặt trọng số cho hoạt ảnh
Bạn có thể sử dụng nhiều hoạt ảnh cho cùng một hành động. Ví dụ, có hai biến thể idle trong mẫu mã cho thay thế hoạt ảnh mặc định.
Khi nhiều hoạt ảnh tồn tại cho một trạng thái nhân vật, kịch bản Animate sẽ chọn ngẫu nhiên hoạt ảnh nào để phát, nhưng bạn có thể ảnh hưởng đến kết quả bằng cách đặt giá trị Weight của hoạt ảnh theo công thức sau:
- trọng số hoạt ảnh / tổng trọng số của tất cả các hoạt ảnh trạng thái
Trong ví dụ sau, idle.Animation1 sẽ phát ⅓ thời gian nhân vật đứng yên, trong khi idle.Animation2 sẽ phát ⅔ thời gian.
Script - Thay Thế Hoạt Ảnh Nhân Vật Mặc ĐịnhanimateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"animateScript.idle.Animation1.Weight.Value = 5animateScript.idle.Animation2.Weight.Value = 10
Tham chiếu hoạt ảnh
Hoạt ảnh nhân vật mặc định
Bảng dưới đây chứa tất cả các hoạt ảnh nhân vật mặc định mà bạn có thể thay thế bằng các hoạt ảnh catalog hoặc các hoạt ảnh tùy chỉnh của riêng bạn. Lưu ý rằng Idle có hai biến thể mà bạn có thể đặt trọng số để phát nhiều hơn hoặc ít hơn.
| Hành động nhân vật | Tham chiếu kịch bản hoạt ảnh |
| Chạy | animateScript.run.RunAnim.AnimationId |
| Đi bộ | animateScript.walk.WalkAnim.AnimationId |
| Nhảy | animateScript.jump.JumpAnim.AnimationId |
| Đứng yên | animateScript.idle.Animation1.AnimationId |
| Ngã | animateScript.fall.FallAnim.AnimationId |
| Bơi | animateScript.swim.Swim.AnimationId |
| Bơi (đứng yên) | animateScript.swimidle.SwimIdle.AnimationId |
| Leo | animateScript.climb.ClimbAnim.AnimationId |
Hoạt ảnh trong catalog
Khi sử dụng bộ hoạt ảnh avatar để thay thế các hoạt ảnh mặc định, hãy sử dụng các tham chiếu sau cho các ID tài sản tương ứng. Ví dụ, nếu bạn muốn áp dụng hoạt ảnh Ninja Jump, sử dụng 656117878. Lưu ý rằng Idle có nhiều biến thể.
| Phi hành gia | Chạy 891636393 Đi bộ 891636393 Nhảy 891627522 Đứng yên 891621366, 891633237, 1047759695 Ngã 891617961 Bơi 891639666 Bơi (đứng yên) 891663592 Leo 891609353 |
| Bubly | Chạy 910025107 Đi bộ 910034870 Nhảy 910016857 Đứng yên 910004836, 910009958, 1018536639 Ngã 910001910 Bơi 910028158 Bơi (đứng yên) 910030921 Leo 909997997 |
| Hoạt hình | Chạy 742638842 Đi bộ 742640026 Nhảy 742637942 Đứng yên 742637544, 742638445, 885477856 Ngã 742637151 Bơi 742639220 Bơi (đứng yên) 742639812 Leo 742636889 |
| Già | Chạy 845386501 Đi bộ 845403856 Nhảy 845398858 Đứng yên 845397899, 845400520, 901160519 Ngã 845396048 Bơi 845401742 Bơi (đứng yên) 845403127 Leo 845392038 |
| Hiệp sĩ | Chạy 657564596 Đi bộ 657552124 Nhảy 658409194 Đứng yên 657595757, 657568135, 885499184 Ngã 657600338 Bơi 657560551 Bơi (đứng yên) 657557095 Leo 658360781 |
| Levitating | Chạy 616010382 Đi bộ 616013216 Nhảy 616008936 Đứng yên 616006778, 616008087, 886862142 Ngã 616005863 Bơi 616011509 Bơi (đứng yên) 616012453 Leo 616003713 |
| Phù thủy | Chạy 707861613 Đi bộ 707897309 Nhảy 707853694 Đứng yên 707742142, 707855907, 885508740 Ngã 707829716 Bơi 707876443 Bơi (đứng yên) 707894699 Leo 707826056 |
| Ninja | Chạy 656118852 Đi bộ 656121766 Nhảy 656117878 Đứng yên 656117400, 656118341, 886742569 Ngã 656115606 Bơi 656119721 Bơi (đứng yên) 656121397 Leo 656114359 |
| Cướp biển | Chạy 750783738 Đi bộ 750785693 Nhảy 750782230 Đứng yên 750781874, 750782770, 885515365 Ngã 750780242 Bơi 750784579 Bơi (đứng yên) 750785176 Leo 750779899 |
| Robot | Chạy 616091570 Đi bộ 616095330 Nhảy 616090535 Đứng yên 616088211, 616089559, 885531463 Ngã 616087089 Bơi 616092998 Bơi (đứng yên) 616094091 Leo 616086039 |
| Rthro | Chạy 2510198475 Đi bộ 2510202577 Nhảy 2510197830 Đứng yên 2510197257, 2510196951, 3711062489 Ngã 2510195892 Bơi 2510199791 Bơi (đứng yên) 2510201162 Leo 2510192778 |
| Phong cách | Chạy 616140816 Đi bộ 616146177 Nhảy 616139451 Đứng yên 616136790, 616138447, 886888594 Ngã 616134815 Bơi 616143378 Bơi (đứng yên) 616144772 Leo 616133594 |
| Siêu anh hùng | Chạy 616117076 Đi bộ 616122287 Nhảy 616115533 Đứng yên 616111295, 616113536, 885535855 Ngã 616108001 Bơi 616119360 Bơi (đứng yên) 616120861 Leo 616104706 |
| Đồ chơi | Chạy 782842708 Đi bộ 782843345 Nhảy 782847020 Đứng yên 782841498, 782845736, 980952228 Ngã 782846423 Bơi 782844582 Bơi (đứng yên) 782845186 Leo 782843869 |
| Vampire | Chạy 1083462077 Đi bộ 1083473930 Nhảy 1083455352 Đứng yên 1083445855, 1083450166, 1088037547 Ngã 1083443587 Bơi 1083464683 Bơi (đứng yên) 1083467779 Leo 1083439238 |
| Người sói | Chạy 1083216690 Đi bộ 1083178339 Nhảy 1083218792 Đứng yên 1083195517, 1083214717, 1099492820 Ngã 1083189019 Bơi 1083222527 Bơi (đứng yên) 1083225406 Leo 1083182000 |
| Zombie | Chạy 616163682 Đi bộ 616168032 Nhảy 616161997 Đứng yên 616158929, 616160636, 885545458 Ngã 616157476 Bơi 616165109 Bơi (đứng yên) 616166655 Leo 616156119 |