But I don’t really know where to start. I think you can get the distance between the player and ladder with magnitude and the moving up or down with body velocity or something like that. But I don’t really know, I’m not even sure how you would also check if the player is near a ladder to climb it cuz I think a loop would be pretty bad.
You can use proximity prompts to make the system in where the player needs to interact with the ladder. You can also tween the character up and down to make them move.
You should, on the client, just check what’s infront of the player (use a blockcast). If a ladder is hit, and the ladder isn’t on the ignore list (ladders that were just exited should be ignored for some time), then the character should be CFramed to the bottom position of the ladder. Then just increase a value when W is held, decrease when S is held. The min is 0, the max is the length of the ladder. Then just CFrame the character to ladderOrigin * CFrame.new(0,value,0)