u/Designer-Key-9687

Image 1 — WHY CANT MY RIG CLIMB???
Image 2 — WHY CANT MY RIG CLIMB???
Image 3 — WHY CANT MY RIG CLIMB???
Image 4 — WHY CANT MY RIG CLIMB???

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