How does Roblox determine what a ladder is?

I am playing around with the Character Physics Controller Releasing Character Physics Controllers
and have run into an issue with climbing. I want basically any surface to be climbable, but in order to do that, I have to understand how Roblox determines that.

-- Returns true of the ClimbSensor found a Part and we don't have the ClimbController active.
local function checkClimbingState()
	return cm.ClimbSensor.SensedPart ~= nil and not isControllerActive(cm.ClimbController)
end

As you can see from this snippet, the local script checks if we bumped into a part and then activates the climbcontroller. Going by that logic, any part should be climbable, but no. It has a way to determine what a ladder is. But where? I can’t find where it checks that. Without this knowledge, I can’t make any surface I determine climbable.

1 Like

Have you checked what isControllerActive is? You probably need to see what that function does, right?

return cm.ClimbSensor.SensedPart ~= nil and not isControllerActive(cm.ClimbController)

ye @Bikereh

elseif checkClimbingState() then
		cm.ActiveController = cm.ClimbController

But is the ClimbController Active Property set to true?

A ‘cheat way’ of climbing anything is by putting transparent horizontal Parts or TrussParts into the surfaces of the Parts you want to climb. I’m guessing you want this for an entire world so a downside would be that this would add a lot of Parts to the game.

1 Like

I mean yea. It checks if its in climbing state and if yes, climb controller is active. Putting invisble trusses would be a complete pain in ash, laggy (since the world is big) and be pretty buggy. I defo wanna do this with a script

Trusses would be a pain. Parts stepped in 1.4 (or whatever the max height increment is for a Part ladder) stud increments vertically stretched the width of Parts would work.

If your place Parts are all vertically placed blocks you could possibly put a script into Studio that takes the size of the block and creates a series of Parts that are flattened to 1 stud Y height, increases their X and Z values by .1 stud, and places them in incremental ‘rungs’ centered on the Parts X,Y axis. This would cut the number of Parts required for 4 faces of a rectangle by a factor of 4.

I’ve never had a bug with a ladder built with Parts though.

I really dont Wish to Work around it. All I Wish to do is, detect a Part (Not Badeplate) and If the Part is sensed we Change the climb Controller Into an active state