我做了一个按钮,它触发了一个动画播放器,但它只对我工作。我的朋友说她可以按下按钮,但动画没有激活。我只是在近似提示符上使用了指南。有人告诉我,这与成为一个本地脚本无关,所以我现在不知所措。
下面的脚本放在StarterPlayer > StarterPlayerScripts下面
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)
发布于 2022-04-14 15:46:03
问题不在于您的代码,而在于它的位置。在LocalScripts中对世界所做的更改不会复制到其他玩家身上,它们只会出现在该播放器上。所以,因为你告诉动画在一个LocalScript中播放,只有那个播放器才能看到动画。
简单的修复方法是将动画代码移动到服务器脚本中,并将脚本移动到ServerScriptService或工作区。ProximityPrompts告诉您是哪个玩家与它交互的,因此您可以在此基础上找到玩家的角色模型。
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)
https://stackoverflow.com/questions/71868600
复制相似问题