Chạy hoạt ảnh nhân vật là một phần quan trọng trong việc làm cho các avatar và nhân vật không chơi được (NPC) trở nên biểu cảm, thực tế và thu hút khán giả của bạn. Ngoài việc cung cấp hình ảnh hấp dẫn, hoạt ảnh nhân vật cung cấp cho người chơi phản hồi từ các hành động của họ, hướng dẫn cách điều hướng môi trường và thông tin quan trọng về nhân vật của họ và những người khác.
Sử dụng tệp .rbxl Trạm Không Gian Nguy Hiểm làm tài liệu tham khảo, hướng dẫn này sẽ chỉ cho bạn cách chạy hoạt ảnh nhân vật bằng hai kỹ thuật khác nhau, bao gồm cả hướng dẫn về:
- Đổi ID tài sản hoạt ảnh nhân vật mặc định bằng hoạt ảnh tùy chỉnh của bạn.
- Kích hoạt hoạt ảnh để phản hồi các hành động của nhân vật trong không gian 3D.
Sau khi hoàn thành hướng dẫn này, bạn sẽ có kỹ năng tùy chỉnh hoạt ảnh cho nhiều tình huống gameplay khác nhau.
Thay đổi hoạt ảnh mặc định
Mỗi nhân vật với đối tượng Humanoid mặc định, cho dù là avatar do người chơi điều khiển hay nhân vật không chơi (NPC), đều bao gồm một tập hợp các hoạt ảnh mặc định được phát mỗi khi nhân vật thực hiện các hành động cụ thể trong trải nghiệm, chẳng hạn như chạy, leo trèo và nhảy. Roblox cung cấp những hoạt ảnh này ngay từ đầu cho mỗi trải nghiệm mà không cần bất kỳ công sức lập trình thêm nào.
Tuy nhiên, nếu những hoạt ảnh mặc định này không đáp ứng yêu cầu thiết kế cho môi trường, thẩm mỹ hoặc câu chuyện tổng thể của thế giới của bạn, bạn có thể thay thế chúng bằng các hoạt ảnh tùy chỉnh áp dụng cho mỗi người chơi tham gia trải nghiệm của bạn.
Để chứng minh, phần tiếp theo sẽ hướng dẫn bạn cách thay thế hoạt ảnh đi bộ mặc định bằng một hoạt ảnh vòng đi bộ tùy chỉnh từ Tạo Hoạt Ảnh Nhân Vật. Sử dụng cùng quy trình này, bạn có thể thay thế bất kỳ hoạt ảnh mặc định nào bằng ID tài sản hoạt ảnh của riêng bạn.
Tạo kịch bản
Mỗi đối tượng Humanoid của nhân vật đều bao gồm một đối tượng con Animator chứa tất cả các hoạt ảnh mặc định của nhân vật đó. Để đặt bất kỳ hoạt ảnh mặc định nào này thành ID tài sản mới, bạn phải tạo một kịch bản trong ServerScriptService để nó có thể tham chiếu và ghi đè các giá trị mặc định của đối tượng Animator ngay khi người chơi tải vào trải nghiệm.
Để tạo một kịch bản sẽ tham chiếu các ID tài sản hoạt ảnh mặc định:
Trong cửa sổ Explorer, thêm một kịch bản mới vào ServerScriptService.
- Di chuột qua ServerScriptService và nhấp vào nút ⊕.
- Từ menu ngữ cảnh, chèn một Script.
Trong kịch bản mới, dán mã sau:
local Players = game:GetService("Players")local function onCharacterAdded(character)local humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")print("Animator found!")endlocal function onPlayerAdded(player)player.CharacterAdded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)
Kịch bản ResetDefaultAnimations bắt đầu bằng cách lấy dịch vụ Players, chứa tất cả các đối tượng Player cho những người chơi khi họ kết nối với một máy chủ. Khi mỗi nhân vật của người chơi tải vào trải nghiệm, hàm onCharacterAdded chờ cho đến khi phát hiện đối tượng Humanoid và Animator của nhân vật.
Khi nó phát hiện một đối tượng Animator lần đầu tiên, kịch bản sẽ in "Animator found!" để cho bạn biết rằng kịch bản đang hoạt động như mong muốn.
Thay thế ID tài sản
Bây giờ bạn đã biết kịch bản của bạn có thể phát hiện khi người chơi tải và kết nối với máy chủ, bạn có thể chỉnh sửa kịch bản của mình để tham chiếu cụ thể đến ID hoạt ảnh mà bạn muốn thay thế bằng các hoạt ảnh tùy chỉnh của mình.
Bảng sau đây chứa tất cả các hoạt ảnh nhân vật mặc định mà bạn có thể gọi và thay thế trong đối tượng Animator. Lưu ý rằng Idle có hai biến thể mà bạn có thể lập trình để 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 |
| Idle | animateScript.idle.Animation1.AnimationId |
| Ngã | animateScript.fall.FallAnim.AnimationId |
| Bơi | animateScript.swim.Swim.AnimationId |
| Bơi (Idle) | animateScript.swimidle.SwimIdle.AnimationId |
| Leo | animateScript.climb.ClimbAnim.AnimationId |
Để thay thế ID tài sản hoạt ảnh đi bộ mặc định:
Gọi tham chiếu kịch bản hoạt ảnh đi bộ mặc định, sau đó thay thế ID tài sản bằng ID tài sản hoạt ảnh tùy chỉnh của bạn. Ví dụ, đoạn mã sau tham chiếu đến hoạt ảnh vòng đi bộ từ Tạo Hoạt Ảnh Nhân Vật.
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"endlocal function onPlayerAdded(player)player.CharacterAdded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)Thử nghiệm trò chơi của bạn để đảm bảo hoạt ảnh đi bộ tùy chỉnh của bạn ghi đè hoạt ảnh mặc định.
Chọn Test từ menu thả xuống và nhấp vào nút Play bên phải để bắt đầu thử nghiệm trò chơi.

Đi xung quanh trạm không gian với avatar của bạn.
Kích hoạt hoạt ảnh
Trong khi kỹ thuật trước đó tập trung vào việc thay thế các hoạt ảnh mặc định tự động phát mỗi khi một nhân vật thực hiện các hành động cụ thể trong trải nghiệm, bạn có thể lập trình kích hoạt các hoạt ảnh phát để phản hồi cho bất kỳ hành động nào của nhân vật trong không gian 3D, chẳng hạn như nhặt một vật phẩm hoặc nhận sát thương từ một mối nguy hiểm.
Phương pháp này rất hữu ích vì nó cung cấp cho người chơi phản hồi ngay lập tức về cách họ nên tương tác với các đối tượng trong môi trường của họ. Để minh họa, phần tiếp theo sẽ chỉ cho bạn cách kích hoạt một hoạt ảnh bất cứ khi nào các nhân vật gần quá với những rò rỉ hơi nước nguy hiểm, như một cách để tinh tế dạy người chơi tránh bước quá gần vào tường.
Chèn khối không gian
Một trong những cách phổ biến nhất để kích hoạt hành vi gameplay độc đáo là sử dụng khối không gian, hoặc các khu vực vô hình trong không gian 3D, để phát hiện khi các nhân vật hoặc đối tượng tương tác với các khu vực cụ thể trong môi trường. Khi bạn kết hợp khối không gian với các kịch bản, bạn có thể sử dụng phản hồi va chạm của chúng để lập trình kích hoạt các hành động, chẳng hạn như giảm sức khỏe của người chơi hoặc phát một hoạt ảnh.

Khi thêm một khối không gian vào trải nghiệm của bạn, điều quan trọng là phải điều chỉnh kích thước nó để chỉ bao phủ không gian mà bạn muốn kích hoạt hoạt ảnh của mình. Nếu bạn làm cho khối không gian của mình quá nhỏ, người chơi có thể không bao giờ va chạm với khu vực đó để phát hoạt ảnh; ngược lại, nếu bạn làm cho khối không gian của mình quá lớn, hoạt ảnh sẽ phát trước khi người chơi đến gần vật phẩm hoặc khu vực quan tâm, và họ có thể không hiểu điều gì đã kích hoạt hoạt ảnh.
Để chèn một khối không gian quanh một rò rỉ hơi nước sẽ kích hoạt một hoạt ảnh:
- Trong cửa sổ Explorer, thêm một phần khối mới.
- Đặt vị trí và điều chỉnh kích thước của khối cho đến khi nó phủ lên khu vực mà bạn muốn kích hoạt hoạt ảnh của mình.
- Trong cửa sổ Properties,
Đặt Name thành AnimationDetector.
Đặt Transparency thành 1 để làm cho khối không nhìn thấy.

Tạo kịch bản
Bây giờ bạn đã có vùng xác định để kích hoạt hoạt ảnh của mình, đã đến lúc tạo một kịch bản phát hiện lập trình khi người chơi va chạm với khối không gian. Bạn có thể lắng nghe các sự kiện va chạm để kích hoạt bất kỳ hoạt ảnh nào phù hợp với yêu cầu gameplay của bạn.
Ví dụ, kỹ thuật hoạt ảnh này sử dụng một LocalScript thay vì một Script để cung cấp cho người chơi phản hồi ngay lập tức khi họ va chạm với khối không gian. Nếu máy chủ lắng nghe sự va chạm và phát hoạt ảnh, có thể có sự trễ giữa việc người chơi chạm vào khối không gian trên máy khách và nhìn thấy hoạt ảnh phát do thời gian sao chép từ máy chủ đến máy khách.
Để tạo một kịch bản địa phương sẽ phát hiện khi nhân vật của người chơi địa phương chạm vào khối không gian:
Trong cửa sổ Explorer, thêm một kịch bản mới vào StarterCharacterScripts. Vị trí này đảm bảo rằng kịch bản và các đối tượng con của nó được sao chép vào nhân vật của người chơi khi tham gia và khi họ hồi sinh trở lại trải nghiệm.
- Mở rộng StarterPlayer, sau đó di chuột qua đối tượng con StarterCharacterScripts của nó và nhấp vào nút ⊕.
- Từ menu ngữ cảnh, chèn một LocalScript và đặt lại tên là TriggerAnimation.
Trong kịch bản mới, dán mã sau:
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 = falseanimationDetector.Touched:Connect(function(hit)if debounce thenreturnendlocal hitCharacter = hit:FindFirstAncestorWhichIsA("Model")if hitCharacter ~= localCharacter thenreturnenddebounce = trueanimationTrack:Play()animationTrack.Ended:Wait()debounce = falseend)
Kịch bản TriggerAnimation bắt đầu bằng cách lấy dịch vụ Workspace, chứa tất cả các đối tượng tồn tại trong thế giới 3D. Điều này rất quan trọng vì kịch bản cần tham chiếu đến đối tượng Part đóng vai trò là khối không gian của bạn.
Đối với mỗi nhân vật người chơi tải lên hoặc hồi sinh trở lại trong trải nghiệm, kịch bản sẽ chờ đợi:
- Đối tượng Animation con của nó, mà bạn sẽ thêm trong phần tiếp theo.
- Đối tượng khối không gian trong môi trường có tên là AnimationDetector.
Khi bất cứ điều gì va chạm với khối không gian, hàm xử lý sự kiện Touched sẽ lấy tổ tiên đầu tiên là Model, mà nên là nhân vật nếu BasePart va chạm với khối không gian là một hậu duệ của mẫu nhân vật. Nếu có, hàm sau đó kiểm tra xem Model có phải là nhân vật của người chơi địa phương hay không. Nếu có, hàm sẽ:
- Đặt debounce thành true.
- Phát và chờ cho hoạt ảnh kết thúc.
- Đặt debounce lại thành false.
Đặt debounce từ false thành true và sau đó là false một lần nữa sau khi hoạt ảnh ngừng phát là một mẫu debounce ngăn hoạt ảnh phát lại liên tục khi người chơi liên tục va chạm với khối không gian. Để biết thêm thông tin về mẫu debounce này, xem Phát hiện va chạm.
Thêm hoạt ảnh
Nếu bạn thử nghiệm trò chơi của mình ngay bây giờ, kịch bản TriggerAnimation của bạn vẫn sẽ không thể phát được hoạt ảnh để phản hồi cho sự va chạm giữa người chơi và khối không gian. Điều này là vì nó đang chờ một đối tượng con Animation với ID tài sản hoạt ảnh mà nó có thể tham chiếu, và đối tượng Animation đó hiện tại không tồn tại.
Để thêm một hoạt ảnh cho kịch bản địa phương tham chiếu khi người chơi va chạm với khối không gian:
Trong cửa sổ Explorer, thêm một hoạt ảnh mới vào TriggerAnimation.
- Di chuột qua TriggerAnimation và nhấp vào nút ⊕.
- Từ menu ngữ cảnh, chèn một Animation.
Chọn đối tượng hoạt ảnh mới, sau đó trong cửa sổ Properties, đặt AnimationID thành ID tài sản hoạt ảnh bạn muốn kích hoạt khi người chơi chạm vào khối không gian. Ví dụ, mẫu Trạm Không Gian Nguy Hiểm tham chiếu rbxassetid://3716468774 để phát một hoạt ảnh của nhân vật ngã ra phía sau.
Thử nghiệm trò chơi của bạn để đảm bảo hoạt ảnh của bạn phát khi người chơi gần rò rỉ hơi nước đầu tiên.