



▲ 2 r/ROBLOXStudio
WHY CANT MY RIG CLIMB???
So the problem is i cant make the rig to climb and i looked everywhere but nothing has worked. If anyone knows or can help me please tell me.
These are the things i already tried:
- made the humanoidrootpart bigger
- changed hipheight (made it higher)
- turned off cancollide on everything except humanoidroot part (noticed torso get auto cancollide = true)
- turned off cancollide on everything except torso part
Idk if this script has anything to do with it but here
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local UIS = game:GetService("UserInputService")
local function load(anim)
if not anim or not anim:IsA("Animation") then return nil end
local track = animator:LoadAnimation(anim)
track.Priority = Enum.AnimationPriority.Movement
return track
end
local walkTrack = load(script:WaitForChild("Walk"))
local jumpTrack = load(script:WaitForChild("Jump"))
local fallTrack = load(script:WaitForChild("Fall"))
local climbTrack = load(script:WaitForChild("Climb"))
local sitTrack = load(script:WaitForChild("Sit"))
if walkTrack then
walkTrack:AdjustSpeed(2)
end
humanoid.WalkSpeed = 25
local currentState = nil
local playing = {
walk = false,
jump = false,
fall = false,
climb = false,
sit = false
}
local function stopAll(except)
for name, track in pairs({
walk = walkTrack,
jump = jumpTrack,
fall = fallTrack,
climb = climbTrack,
sit = sitTrack
}) do
if name ~= except and track and track.IsPlaying then
track:Stop(0.15)
playing[name] = false
end
end
end
local function cancelSit()
if sitTrack and sitTrack.IsPlaying then
sitTrack:Stop(0.15)
playing.sit = false
end
end
local function isGrounded()
return currentState ~= Enum.HumanoidStateType.Freefall
and currentState ~= Enum.HumanoidStateType.Jumping
end
game:GetService("ReplicatedStorage").RemoteEvents.Sit.Event:Connect(function()
if humanoid.MoveDirection.Magnitude > 0
and humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
return
end
if sitTrack then
stopAll("sit")
cancelSit()
sitTrack:Play(0.1)
playing.sit = true
end
end)
UIS.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == Enum.KeyCode.F then
if humanoid.MoveDirection.Magnitude > 0
and humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
return
end
if sitTrack then
stopAll("sit")
cancelSit()
sitTrack:Play(0.1)
playing.sit = true
end
end
end)
humanoid.Jumping:Connect(function()
cancelSit()
if not jumpTrack then return end
stopAll("jump")
if not playing.jump then
jumpTrack:Play(0.1)
playing.jump = true
end
end)
humanoid.StateChanged:Connect(function(_, newState)
currentState = newState
if newState == Enum.HumanoidStateType.Freefall then
task.delay(0.15, function()
if humanoid:GetState() == Enum.HumanoidStateType.Freefall and fallTrack then
cancelSit()
stopAll("fall")
if not playing.fall then
fallTrack:Play(0.1)
playing.fall = true
end
end
end)
else
if fallTrack and fallTrack.IsPlaying then
fallTrack:Stop(0.15)
playing.fall = false
end
end
if newState == Enum.HumanoidStateType.Climbing then
print("CLIMBING")
cancelSit()
if climbTrack then
stopAll("climb")
if not playing.climb then
climbTrack:Play(0.1)
playing.climb = true
end
end
else
print("NOT CLIMBING")
if climbTrack and climbTrack.IsPlaying then
climbTrack:Stop(0.15)
playing.climb = false
end
end
end)
humanoid.Running:Connect(function(speed)
local moving = humanoid.MoveDirection.Magnitude > 0.05
if moving then
cancelSit()
end
if not walkTrack then return end
if moving and isGrounded() then
if not playing.walk then
stopAll("walk")
walkTrack:Play(0.1)
playing.walk = true
end
walkTrack:AdjustSpeed(1.7)
else
if walkTrack.IsPlaying then
walkTrack:Stop(0.15)
playing.walk = false
end
end
end)
u/Designer-Key-9687 — 5 hours ago