Sorry for any English mistakes.
I'm making a plataformer that has a mechanic where you can combine jumps.
Jump + dash + double jump+dash.
The problem is that the jump combo sometimes works and sometimes it glitches. When it glitches the player jumps then dash normally,but when they double jump occurs the repeat cycle of the dash animation doesn't and making the dash animation don't cancel when double jumping and the debounce staying as false.
here's the doublejump script
local UserInputService = game:GetService("UserInputService") local localPlayer = game.Players.LocalPlayer local character local humanoid =script.Parent:WaitForChild("Humanoid") local animation = Instance.new("Animation") animation.AnimationId = 'http://www.roblox.com/Asset?ID=3288217405' local animTrack = humanoid:LoadAnimation(animation) animTrack:AdjustSpeed(2) local canDoubleJump = false local hasDoubleJumped = false local oldPower local TIME_BETWEEN_JUMPS = 0.1 local DOUBLE_JUMP_POWER_MULTIPLIER=1.5 UserInputService.InputBegan:Connect(function(input) if input.KeyCode == Enum.KeyCode.Space then if not character or not humanoid or not character:IsDescendantOf(workspace) or humanoid:GetState() == Enum.HumanoidStateType.Dead then return end if canDoubleJump and not hasDoubleJumped then print("doubleJump") animTrack:Play() humanoid:ChangeState(Enum.HumanoidStateType.Jumping) hasDoubleJumped = true humanoid.JumpPower = oldPower * DOUBLE_JUMP_POWER_MULTIPLIER end end end) local function characterAdded(newCharacter) character = newCharacter humanoid = newCharacter:WaitForChild("Humanoid") hasDoubleJumped = false canDoubleJump = false oldPower = humanoid.JumpPower humanoid.StateChanged:connect(function(old, new) if new == Enum.HumanoidStateType.Landed then canDoubleJump = false hasDoubleJumped = false humanoid.JumpPower = oldPower elseif new == Enum.HumanoidStateType.Freefall then wait(TIME_BETWEEN_JUMPS) canDoubleJump = true end end) end if localPlayer.Character then characterAdded(localPlayer.Character) end
dash script
if input.KeyCode == Enum.KeyCode.E and humanoid:GetState() == Enum.HumanoidStateType.Freefall and debounce then print"dash" animTrackdash:Play() local Root = localPlayer.character:WaitForChild("HumanoidRootPart") Root.Velocity = (Root.CFrame.LookVector + Root.CFrame.UpVector*0.3)*(30+humanoid.WalkSpeed*2) debounce = false repeat wait() animTrackdash:Play() animTrackdash.TimePosition = 0.300 until humanoid:GetState()== Enum.HumanoidStateType.Jumping or humanoid:GetState()== Enum.HumanoidStateType.Landed debounce = true animTrackdash:Stop()
What confuses me the most is that sometimes the jump combo works fine,but sometimes it just glitches.