添加动画

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

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

脚本动画

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

设置项目

在这个项目中,您将创建触摸时触发动画的零件。

  1. 要组织所有播放动画的零件,请在工作区中创建一个名为 TouchPartFolder 的文件夹。

  2. 在触摸零件文件夹中,添加零件。

    确保零件放置在玩动画有意义的位置,例如玩家收集的对象附近或玩家收集的对象附近。

    示例胜利部分
    示例交互部分
  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. 下一个脚本为玩家触发动画。在 ReplicatedStorage 中,创建一个名为 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

播放动画

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

设置动画

脚本需要知道要播游玩的动画。要使用导出的动画,请通过 web 浏览器查找其 资产 ID 。然后,那个 ID 将允许该动画在脚本中加载。

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

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

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

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

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

下一步

以下是几种继续学习的方法

学习动画

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

在那个页面,您可以找到有用的链接提高动画,例如使用曲线编辑器为光滑运动,或在精炼动画中提供提示。

动态零件

此外,开始可选的课程 动画零件 来学习如何编写십几岁的人,这是一个可以让您缩放、旋转和移动零件的功能。 下面是示例。