Chơi hoạt họa 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.

Hoạt họa hoạt họa nhân vật là một phần quan trọng của những gì làm cho avatar và những nhân vật không chơi (NPC) biểu cảm, thực tế và hấp dẫn cho đối tượng của bạn. Ngoài việc cung cấp những hình ảnh miễn phí, hoạt họa nhân vậ

Sử dụng tập tin Hazardous Space Station.rbxl như một tham khảo, hướng dẫn này cho bạn thấy cách chơi hoạt họa nhân vật bằng hai phương pháp khác nhau, bao gồm hướng dẫn về các kỹ năng:

  • Đổi giá trị ID hoạt họa nhân vật mặc định của bạn với các hoạt họa tùy chỉnh của riêng bạn.
  • Kích hoạt hoạt họa trong phản ứng đáp lại 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ó các kỹ năng để tùy chỉnh hoạt họa cho một loạt các tình huống gameplay.

Đổi hoạt họa mặc định

Mọi nhân vật có một đối tượng Humanoid mặc định, dù đó là một avatar người chơi hoặc một nhân vật không phải người chơi (NPC), bao gồm một bộ hoạt họa mặc định được

Hoạt họa mùa thu預設
Hoạt Hình Bơi Mặt Mặc Định
Hoạt Hình Qua Tảng Nhảy Mặt Tiền

Tuy nhiên, nếu các hoạt họa mặc định này không đáp ứng các yêu cầu thiết kế cho môi trường, môi trường hoặc tổng thể của thế giới của bạn, bạn có thể trao đổi chúng với các hoạt họa tùy chỉnh áp dụng cho mọi người tham gia trải nghiệm của bạn.

Để minh họa, bộ phận sau đây dạy bạn cách thay thế hoạt họa di chuyển mặc định bằng một hoạt họa di chuyển tùy chỉnh từ Tạo hoạt họa nhân vật . Bằng cách sử dụng cùng một quá trình này, bạn có thể thay thế bất kỳ hoạt họa nào của mặc định với các ID hoạt họa của ri

Hoạt Hình Đi Bộ Mặc Định
Hoạt Hình Đi Bộ Tùy Chỉnh

Tạo Script

Mọi nhân vật của mỗi Humanoid đối tượng bao gồm một đối tượng con Animator để lưu trữ tất cả các hoạt họa mặc định của nhân vậ

Để tạo một script tham khảo ID hoạt họa mặc định:

  1. Trong cửa sổ Explorer , thêm một script mới vào ServerScriptService .

    1. Chuột qua ServerScriptService và nhấp vào nút ⊕.
    2. Từ menu ng上 context, insert a Script .
  2. Trong mô-đun mới này, hãy vẽ mã sau đây:


    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animator found!")
    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 nhận được máy chủvụ Players, bao gồm tất cả Player đối tượ

Khi nó phát hiện một Animator đối tượng lần đầu tiên, script sau đó in "Animator found!" để cho bạn biết rằng script đang hoạt động như ý muốn.

Thay thế AssetID

Bây giờ bạn biết rằng 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 bạn để xác định ID hoạt họa (s) mà bạn muốn đổi với các hoạt họa tùy chỉnh của riêng bạn.

Bảng sau đây chứa tất cả các hoạt họa nhân vật mặc định mà bạn có thể gọi và thay thế trong Animator đối tượng. Lưu ý rằng Idle có hai biến thể mà bạn có thể lập trình để chơi thường xuyên hơn hoặc ít hơn.

Hành động nhân vậtTham khảo ngôn tản tượng
Chạy animateScript.run.RunAnim.AnimationId
Di chuyển animateScript.walk.WalkAnim.AnimationId
Nhảy animateScript.jump.JumpAnim.AnimationId
Nhàn rỗi

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

Mùa thu animateScript.fall.FallAnim.AnimationId
Bơi

animateScript.swim.Swim.AnimationId

Bơi (Idle)

animateScript.swimidle.SwimIdle.AnimationId

Leo trèo animateScript.climb.ClimbAnim.AnimationId

Để thay thế giá trị mặc định của hoạt họa di chuyển:

  1. Gọi biến thể mặc định của script hoạt họa bước đi, sau đó thay thế biến thể ID bằng các biến thể hoạt họa tùy chỉnh của riêng bạn. Ví dụ, mẫu mã code sau đây tham khảo hoạt họa hệ thống bước đi từ Creating Character Animations.


    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"
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. Thử nghiệm trải nghiệm của bạn để đảm bảo hoạt họa di chuyển tùy chỉnh của bạn không bị vượt qua hoạt hiệu ứng độngmặc định.

    1. Ở thanh menu, hãy nhấp vào nút Chơi . Studio tham gia vào chế độ thử nghiệm.

      A Studio view of the Home tab with the Play button highlighted.
    2. Di chuyển quanh trạm vũ trụ với avatar của bạn.

Đàn hồi hoạt họa

Trong khi phương pháp trước tập trung vào việc đổi chuyển hoạt họa mặc định mà hoạt động tự động mỗi khi một nhân vật thực hiện các hành động nhất định trong trải nghiệm, bạn có thể kết hợp các hoạt động để tạo ra các hoạt động chơi trong phản

Trong ví dụ này, khi người chơi chạm vào nền tảng vàng, họ sẽ kích hoạt hoạt hiệu ứng độngnhảy múa nhân vật không phải mặc định.

Phương pháp này để chơi hoạt họa là 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 thiết bị trong môi trường của họ. Để cho thấy, bộ phận dưới đây cho bạn thấy cách truyền cảm giác ngay lập tức khi người chơi đ

Tăng dung tích

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 volumes , hoặc các khu vực nào đó trong không gian 3D, để phát hiện khi nào người chơivật hoặc đối tượng tương tác với các khu vực nào đó của môi tr

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.
Bí ẩn của Duvall Drive sử dụng các thể lượng để kích hoạt các sự kiện gameplay thay đổi ngoại hình phòng.

Khi thêm một khối lượng vào trải nghiệm của bạn, nó rất quan trọng để thu nhỏ nó để chỉ bao gồm không gian mà bạn muốn kích hoạt hiệu ứng độnghiệu ứng độngcủa mình. Nếu bạn làm cho âm lượng của hiệu ứng độngquá nhỏ, người chơi có thể không bao gi

Để tạo ra một khối lượng xung quanh một vết rò rỉ hơi nước sẽ kích hoạt hoạt hiệu ứng động:

  1. Trong cửa sổ Explorer , thêm một phần mới.
  2. Đặt vị trí và thay đổi kích thước của khối cho đến khi nó bao gồm khu vực bạn muốn kích hoạt hoạt hiệu ứng độngcủa mình.
  3. Trong cái Cột tính window,
    1. Đặt Tên để AnimationDetector .

    2. Đặt Độ trong suốt để 1 để làm cho khối này vô hình.

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

Tạo Script

Bây giờ bạn có một khu vực định cho phép bạn kích hoạt hoạt hiệu ứng độngcủa mình, đã đến lúc tạo một script tự động phát hiện khi người chơi va chạm với âm lượng. Bạn có thể sau đó lắng nghe các sự kiện va chạm để kích hoạt bất kỳ hoạt họa nào có ý nghĩa cho yêu cầu gameplay của bạn.

Ví dụ, công nghệ hoạt họa này sử dụng một LocalScript thay vì một Script để cung cấp phản hồi ngay lập tức cho người chơi khi họ va chạm với âm lượng. Nếu máy chủ nghe và chơi hoạt hiệu ứng động, có thể có một độ

Để tạo một mã nhỏ để phát hiện khi nào nhân vật người chơi địa phương của bạn chạm vào âm lượng:

  1. Trong cửa sổ Explorer , thêm một script mới vào StartercharacterScripts . Việc đặt các con cháu này đảm bảo rằng script và con cháu nó được sao chép vào nhân vật người chơi khi họ tham gia vào trải nghiệm.

    1. Mở rộng StarterPlayer , sau đó hover over its StartercharacterScripts child and click the ⊕ button.
    2. Từ menu ng上 context, insert a LocalScript and rename it TriggerAnimation .
  2. Trong mô-đun mới này, hãy vẽ mã sau đây:


    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)

Cuộn phim TriggerAnimation bắt đầu bằng cách nhận được dịch vụ Workspace, which contains tất cả các thống kê đối tượng đang tồn tại trong thế giới 3D. Điều này quan trọng vì script cần phải tham chiếu vào đối tượng Part đang hoạt động nh

Đối với mỗi nhân vật người chơi được tải hoặc phục hồi vào trải nghiệm, script chờ đợi:

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

Khi bất kỳ điều gì va chạm với volume, trình phát hành chức năng Touched sẽ lấy người tiền nhiên đầu tiên là một Model , which should be the character if the <

  • Đặt debounce lại để true .
  • Chơi và chờ đợi hoạt họa kết thúc.
  • Đặt debounce trở lại false .

Cài đặt debounce từ false đến true đến false một lần nữa sau khi hoạt họa kết thúc chơi là một mẫu debounce ngăn chặn hoạt họa không bị tác động lại nhiều lần khi người chơi liên tục va chạ

Thêm Hoạt Hình

Nếu bạn đang chơi trải nghiệm của mình ngay bây giờ, TriggerAnimation script của bạn vẫn sẽ không thể chơi một hoạt họa trong phản ứng đáp lại sự va chạm người chơi địa phương. Điều này là do nó đang ch

Để thêm một hoạt họa cho người chơi để tham chiếu vào khi người chơi va chạm với âm lượng:

  1. Trong cửa sổ Trình phát Explorer , thêm một hoạt họa mới vào TriggerAnimation .

    1. Hover over TriggerAnimation and click the ⊕ button.
    2. Từ menu context, insert an Hoạt họa .
  2. Chọn đối tượng hoạt họa mới, sau đó trong cửa sổ Thuộc tính , đặt AnimationID vào Animation AssetID bạn muốn kích hoạt khi người chơi chạm vào volume. Ví dụ, mẫu Hazardous Space Station tham khảo

  3. Thử nghiệm trải nghiệm của bạn để đảm bảo hoạt họa của bạn sẽ được phát khi người chơi đang gần bơm hơi đầu tiên.