Chơi hoạt ảnh nhân vật

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Chơi 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 thể chơi (NPC) trở nên biểu cảm, thực tế và hấp dẫn đối với khán giả của bạn. Ngoài việc cung cấp hình ảnh sống động, hoạt ảnh nhân vật cung cấp phản hồi cho người chơ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 cho bạn biết cách chơi hoạt ảnh nhân vật bằng hai kỹ thuật khác nhau, bao gồm hướng dẫn về:

  • Thay thế ID tài sản hoạt ảnh nhân vật mặc định bằng các hoạt ảnh tùy chỉnh của riêng bạn.
  • Kích hoạt hoạt ảnh để phản ứng vớ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 chơi game khác nhau.

Thay đổi hoạt ảnh mặc định

Mỗi nhân vật có đố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 phải người chơi (NPC), đều bao gồm một tập hợp các hoạt ảnh mặc định được phát khi nhân vật thực hiện các hành động cụ thể trong trò chơi, 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 lập tức cho mọi trò chơi mà không cần nỗ lực lập trình thêm.

Hoạt ảnh Rơi Mặc định
Hoạt ảnh Bơi Mặc định
Hoạt ảnh Leo Mặc định

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ò chơi của bạn.

Để minh họa, phần tiếp theo sẽ dạy bạn cách thay thế hoạt ảnh đi bộ mặc định bằng một hoạt ảnh chu trình đi bộ tùy chỉnh từ Tạo Hoạt ảnh Nhân vật. Sử dụ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 các ID tài sản hoạt ảnh của riêng bạn.

Hoạt ảnh Đi bộ Mặc định
Hoạt ảnh Đi bộ Tùy chỉnh

Tạo kịch bản

Mỗi đối tượng Humanoid của nhân vật bao gồm một đối tượng con Animator lưu trữ 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 thành các 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ò chơi.

Để tạo một kịch bản sẽ tham chiếu đến các ID tài sản hoạt ảnh mặc định:

  1. Trong cửa sổ Explorer, thêm một kịch bản mới vào ServerScriptService.

    1. Di chuột qua ServerScriptService và nhấp vào nút ⊕.
    2. Từ menu ngữ cảnh, chèn một Kịch bản.
  2. 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!")
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.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 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ò chơi, hàm onCharacterAdded chờ cho đến khi nó phát hiện các đối tượng HumanoidAnimator 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ể sửa đổi 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 riêng bạn.

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 của Nhân vậtTham chiếu Kịch bản Hoạt ảnh
ChạyanimateScript.run.RunAnim.AnimationId
Đi bộanimateScript.walk.WalkAnim.AnimationId
NhảyanimateScript.jump.JumpAnim.AnimationId
Idle

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

RơianimateScript.fall.FallAnim.AnimationId
Bơi

animateScript.swim.Swim.AnimationId

Bơi (Idle)

animateScript.swimidle.SwimIdle.AnimationId

LeoanimateScript.climb.ClimbAnim.AnimationId

Để thay thế ID tài sản hoạt ảnh đi bộ mặc định:

  1. 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 chu trình đ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"
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. Chơi thử 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.

    1. 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.

      Tùy chọn Kiểm tra trong menu thả xuống chế độ thử nghiệm của Studio.
    2. Đ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 khi một nhân vật thực hiện các hành động cụ thể trong trò chơi, bạn có thể lập trình kích hoạt hoạt ảnh để phát phản ứng với 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.

Trong ví dụ này, khi người chơi chạm vào nền tảng vàng, họ kích hoạt một hoạt ảnh nhảy không mặc định của nhân vật.

Phương pháp chơi hoạt ảnh 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ẽ cho bạn biết cách kích hoạt một hoạt ảnh bất cứ khi nào các nhân vật quá gần với các vết rò rỉ hơi nước nguy hiểm như một cách để dạy người chơi tránh đi quá gần tường.

Chèn khối

Một trong những cách phổ biến nhất để kích hoạt hành vi chơi game độc đáo là sử dụng khối, hoặc các vùng 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ể của môi trường. Khi bạn kết hợp khối 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.

Một cái nhìn xa của một phòng trong biệt thự. Một hình dáng của một khối ở giữa phòng để chỉ ra khối kích hoạt các sự kiện chơi game.
The Mystery of Duvall Drive sử dụng khối để kích hoạt các sự kiện chơi game thay đổi diện mạo trực quan của phòng.

Khi thêm một khối vào trò chơi của bạn, điều quan trọng là phải điều chỉnh kích thước của nó để 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 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 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 xung quanh một vết rò rỉ hơi nước sẽ kích hoạt một hoạt ảnh:

  1. Trong cửa sổ Explorer, thêm một khối mới.
  2. Định vị và thay đổi kích thước khối cho đến khi nó bao phủ khu vực mà bạn muốn kích hoạt hoạt ảnh của mình.
  3. Trong cửa sổ Properties,
    1. Đặt Name thành AnimationDetector.

    2. Đặt Transparency thành 1 để làm cho khối vô hình.

      Một hình dáng của một khối được nhìn thấy xung quanh một lỗ thông hơi hơi nước để chỉ ra vị trí của khối.

Tạo kịch bản

Bây giờ bạn đã có một 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 nào người chơi va chạm với khối. 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 chơi game 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. Nếu máy chủ lắng nghe va chạm và phát hoạt ảnh, có thể có một độ trễ giữa việc người chơi chạm vào khối trên máy khách của họ và 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 cục bộ sẽ phát hiện khi nhân vật của người chơi cục bộ chạm vào khối:

  1. 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 người chơi khi tham gia khi họ hồi sinh trở lại trò chơi.

    1. Mở rộng StarterPlayer, sau đó di chuột qua đối tượng con StarterCharacterScripts của nó và nhấp vào nút ⊕.
    2. Từ menu ngữ cảnh, chèn một LocalScript và đổi tên thành TriggerAnimation.
  2. 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 = 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)

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 hoạt động như khối của bạn.

Đối với mỗi nhân vật người chơi tải vào hoặc hồi sinh trở lại trò chơi, kịch bản chờ đợi:

  • Đối tượng con Animation của nó, mà bạn sẽ thêm trong phần tiếp theo.
  • Các đối tượng HumanoidAnimator của nhân vật.
  • Đối tượng khối trong không gian làm việc có tên AnimationDetector.

Khi bất kỳ điều gì va chạm với khối, hàm xử lý sự kiện Touched lấy tổ tiên đầu tiên là một Model, mà nên là nhân vật nếu BasePart va chạm với khối là một phần tử con của mô hình nhân vật. Nếu đúng, hàm sẽ kiểm tra xem Model có phải là nhân vật của người chơi cục bộ hay không. Nếu đúng, hàm sẽ:

  • Đặt debounce thành true.
  • Phát và chờ cho hoạt ảnh kết thúc.
  • Đặt debounce trở lại false.

Việc đặt debounce từ false thành true rồi lại false sau khi hoạt ảnh kết thúc phát là một mẫu debounce ngăn hoạt ảnh được kích hoạt liên tục khi người chơi liên tục va chạm với khối. Để biết thêm thông tin về mẫu debounce này, hã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 một hoạt ảnh để phản ứng với va chạm giữa người chơi cục bộ và khối. Điều này là vì nó đang chờ một đối tượng con Animation với một ID tài sản hoạt ảnh mà nó có thể tham chiếu, và đối tượng Animation đó hiện không tồn tại.

Để thêm một hoạt ảnh cho kịch bản cục bộ tham chiếu khi người chơi va chạm với khối:

  1. Trong cửa sổ Explorer, thêm một hoạt ảnh mới vào TriggerAnimation.

    1. Di chuột qua TriggerAnimation và nhấp vào nút ⊕.
    2. Từ menu ngữ cảnh, chèn một Animation.
  2. 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 mà bạn muốn kích hoạt khi người chơi chạm vào khối. 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 một nhân vật ngã về phía sau.

  3. Chơi thử 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 vết rò rỉ hơi nước đầu tiên.

©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.