添加动画

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

要在游戏中实现动画,请使用脚本。在本教程中,您将使用预制脚本实现之前制作的胜利动画。完成后,这个动画可以用来庆祝玩家的成就,例如达到障碍赛的终点或找到秘密。

脚本动画

动画使用 脚本 触发。一个方法是使用事件在各种情况下播放动画,例如玩家完成一等级、击败敌人或甚至进行游戏内购买。

设置项目

对于这个项目,您将创建部件,当触摸时,触发该玩家的动画。

  1. 要组织所有播放动画的零件,请在工作区中添加一个名为 TouchPartFolder 的文件夹(将鼠标悬停在工作区上并单击 +)。

  2. 在 TouchPartFolder 中,添加零件。

    确保零件放置在播放动画有意义的位置,例如等级结束或靠近玩家收集的对象。

    示例胜利部分
    >

    示例互动部分
    >

  3. 在 StarterPlayer > StarterCharacterScripts 中,创建一个名为 TouchPartRegister 的本地脚本。然后复制并粘贴以下代码。


    -- 与“PlayerAnimationFeedback”脚本一起使用,在零件触摸上播放动画
    -- 服务
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    local character = player.Character or player.CharacterAdded:Wait()
    local humanoid = character:WaitForChild("Humanoid")
    local canTouch = false
    -- 包含反馈动画模块
    local PlayerAnimationFeedback = require(ReplicatedStorage:WaitForChild("PlayerAnimationFeedback"))
    -- 在零件被触摸时调用的函数
    local function onPartTouch(otherPart)
    if humanoid and canTouch == false then
    canTouch = true
    PlayerAnimationFeedback:PlayAnimation()
    canTouch = false
    end
    end
    -- 在启动时,调用动画模块加载函数
    PlayerAnimationFeedback:LoadAnimation(humanoid)
    -- 还可以将零件文件夹绑定到“已触碰”事件以运行“onPartTouch()”
    local touchPartFolder = workspace:WaitForChild("TouchPartFolder")
    local touchParts = touchPartFolder:GetChildren()
    for _, touchPart in touchParts do
    touchPart.Touched:Connect(onPartTouch)
    end

    该脚本查找 TouchPartFolder 中的所有部分,并给予它们 Touched() 事件。发射时,事件会运行一个函数,为玩家播放动画。

  4. 下一个脚本触发玩家的动画。在复制存储中,创建一个名为 PlayerAnimationFeedback 的新模块脚本。然后,复制并粘贴以下代码。


    -- 与“TouchPartRegister”脚本一起使用,为玩家播放动画
    local PlayerAnimationFeedback = {}
    local feedbackAnimationTrack
    local ANIMATION_FADE = 0.3
    local ANIMATION_ID = "rbxassetid://YOUR_ANIMATION"
    -- 功能将动画加载到玩家的角色上
    function PlayerAnimationFeedback:LoadAnimation(humanoid)
    local feedbackAnimation = Instance.new("Animation")
    feedbackAnimation.AnimationId = ANIMATION_ID
    feedbackAnimationTrack = humanoid.Animator:LoadAnimation(feedbackAnimation)
    feedbackAnimationTrack.Priority = Enum.AnimationPriority.Action
    feedbackAnimationTrack.Looped = false
    end
    -- 播放动画的函数
    function PlayerAnimationFeedback:PlayAnimation()
    feedbackAnimationTrack:Play(ANIMATION_FADE)
    task.wait(feedbackAnimationTrack.Length)
    end
    return PlayerAnimationFeedback

播放动画

动画必须在脚本中被识别、加载和播放。

设置动画

脚本需要知道要播游玩哪个动画。要使用导出的动画,通过网络浏览器找到其 资产ID 。该ID将允许该动画在脚本中加载。

  1. 打开创建页面的 动画 部分。

  2. 找到并单击已导出的动画。

  3. 从您浏览器中的 URL 复制其 ID。

  4. 在脚本中,PlayerAnimationFeedback,替换 placeholder,YOUR_ANIMATION(行 8),用复制的 ID 替换。

  5. 运行项目并测试,一旦玩家击中零件,你就看到了动画。

下一步

以下是一些继续学习的方法

了解动画

目前,你已经学会了如何创建动画并将它们添加到体验中。要继续学习,我们建议访问动画概览。

在那个页面上,你会找到有用的链接来改进动画,例如使用曲线编辑器实现平滑移动,或调整动画的提示。

动画零件

此外,启动可选课程动画零件来学习如何编写青少年代码,这是一项允许您缩放、旋转和移动零件的功能。最终项目的样本如下。