首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于Roblox Studio的动画问题

关于Roblox Studio的动画问题
EN

Stack Overflow用户
提问于 2022-04-14 08:23:35
回答 1查看 647关注 0票数 0

我做了一个按钮,它触发了一个动画播放器,但它只对我工作。我的朋友说她可以按下按钮,但动画没有激活。我只是在近似提示符上使用了指南。有人告诉我,这与成为一个本地脚本无关,所以我现在不知所措。

下面的脚本放在StarterPlayer > StarterPlayerScripts下面

代码语言:javascript
运行
复制
local Players = game:GetService("Players")

local player = Players.LocalPlayer
local character = player.Character
if not character or not character.Parent then
    character = player.CharacterAdded:Wait()
end

local humanoid = character:WaitForChild("Humanoid")
local Animator = humanoid:WaitForChild("Animator")

local shockButton = workspace.ShockButton.Button
local proximityPrompt = shockButton.ProximityPrompt

local shockAnimation = Instance.new("Animation")
shockAnimation.AnimationId = "rbxassetid://9349455501"

local shockAnimationTrack = Animator:LoadAnimation(shockAnimation)

shockAnimationTrack.Priority = Enum.AnimationPriority.Action
shockAnimationTrack.Looped = false

local function onShockTrigger(player)
    
    shockAnimationTrack:Play()
    humanoid.WalkSpeed = 0
    shockAnimationTrack.Stopped:Wait()
    humanoid.WalkSpeed = 16
end

proximityPrompt.Triggered:Connect(onShockTrigger)
EN

回答 1

Stack Overflow用户

发布于 2022-04-14 15:46:03

问题不在于您的代码,而在于它的位置。在LocalScripts中对世界所做的更改不会复制到其他玩家身上,它们只会出现在该播放器上。所以,因为你告诉动画在一个LocalScript中播放,只有那个播放器才能看到动画。

简单的修复方法是将动画代码移动到服务器脚本中,并将脚本移动到ServerScriptService或工作区。ProximityPrompts告诉您是哪个玩家与它交互的,因此您可以在此基础上找到玩家的角色模型。

代码语言:javascript
运行
复制
local shockButton = workspace.ShockButton.Button
local proximityPrompt = shockButton.ProximityPrompt

local shockAnimation = Instance.new("Animation")
shockAnimation.AnimationId = "rbxassetid://9349455501"

local function onShockTrigger(player)
    -- get the animator
    local character = player.Character
    if not character or not character.Parent then
        character = player.CharacterAdded:Wait()
    end
    local humanoid = character:WaitForChild("Humanoid")
    local Animator = humanoid:WaitForChild("Animator")

    -- configure the animation
    local shockAnimationTrack = Animator:LoadAnimation(shockAnimation)
    shockAnimationTrack.Priority = Enum.AnimationPriority.Action
    shockAnimationTrack.Looped = false

    -- play the animation
    shockAnimationTrack:Play()
    humanoid.WalkSpeed = 0
    shockAnimationTrack.Stopped:Wait()
    humanoid.WalkSpeed = 16
end

proximityPrompt.Triggered:Connect(onShockTrigger)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71868600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档