Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Animations are stopping too late when using :Stop()?

Asked by
soutpansa 120
5 years ago

I have a temporary system for handling how players get stunned when they take damage. I do plan on changing this script later, but I am still curious as to why it is stopping animations too late. As soon as a Stun Value is changed, it will activate the animation instantly, then after the wait() is does everything on time, except stopping the animation. The longer the wait time is, the longer it takes to stop the animation. It's almost like it's a few seconds behind what I tell it to wait.

script: (server script in Backpack)

local Player = script.Parent.Parent.Parent
local Char = workspace:WaitForChild(Player.Name)
local Status = Player:WaitForChild("Status")
local Stuns = Player:WaitForChild("Stuns")
local Animation = Char.Humanoid:LoadAnimation(game:GetService("ReplicatedStorage").Animations.Stuns.ChestStun)
local CrushAnim = Char.Humanoid:LoadAnimation(game:GetService("ReplicatedStorage").Animations.Stuns.Crush)

Status.HitBy1:GetPropertyChangedSignal("Value"):Connect(function()
    wait(0.7)
    Status.HitBy1.Value = false
end)

Stuns.ShortStun:GetPropertyChangedSignal("Value"):Connect(function()
    Animation:Play()
    local BP = Instance.new("BodyPosition")
    BP.Name = "StunBP"
    BP.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
    BP.Parent = Player.Character.HumanoidRootPart
    BP.Position = Player.Character.HumanoidRootPart.Position
    wait(1)
    Animation:Stop()
    Stuns.ShortStun.Value = false
    BP:Destroy()
end)

Status.HitBy5:GetPropertyChangedSignal("Value"):Connect(function()
    wait(1)
    Status.HitBy5.Value = false
end)

Stuns.MedStun:GetPropertyChangedSignal("Value"):Connect(function()
    Animation:Play()
    local BP = Instance.new("BodyPosition")
    BP.Name = "StunBP"
    BP.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
    BP.Parent = Player.Character.HumanoidRootPart
    BP.Position = Player.Character.HumanoidRootPart.Position
    wait(5)
    Animation:Stop()
    Stuns.MedStun.Value = false
    BP:Destroy()
end)

Status.HitBy10:GetPropertyChangedSignal("Value"):Connect(function()
    wait(1)
    Status.HitBy10.Value = false
end)

Stuns.LongStun:GetPropertyChangedSignal("Value"):Connect(function()
    Animation:Play()
    local BP = Instance.new("BodyPosition")
    BP.Name = "StunBP"
    BP.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
    BP.Parent = Player.Character.HumanoidRootPart
    BP.Position = Player.Character.HumanoidRootPart.Position
    wait(10)
    Animation:Stop()
    Stuns.LongStun.Value = false
    BP:Destroy()
end)



Stuns.Crush:GetPropertyChangedSignal("Value"):Connect(function()
    CrushAnim:Play()
    local BP = Instance.new("BodyPosition")
    BP.Name = "StunBP"
    BP.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
    BP.Parent = Player.Character.HumanoidRootPart
    BP.Position = Player.Character.HumanoidRootPart.Position
    wait(1)
    CrushAnim:Stop()
    Stuns.Crush.Value = false
    BP:Destroy()
end)

Thanks for reading

0
Unfortunately using that causes the animations to never stop. Thanks though soutpansa 120 — 5y

Answer this question