Help with ladder placement system?

Hello, I’m trying to make a steep steps ladder placement system for my game. I have currently created a part that is welded players torso but I need help with the collision system

My problem is that the part does not move based on it’s surroundings like in steep steps, instead it just clips through its surroundings and I don’t know how to fix it
Thanks, Alek

1 Like

You should instead have an attachment attached to the torso, then use an AlignPosition and AlignOrientation constraint to have the ladder track that attachment. That way it will collide normally, this has the advantage of also not being able to fling the player, if you leave ReactionForce off.

Raycasting is how the ladder prevents itself from clipping into walls.
Raycasting Guide

You can raycast with torso.Position as its origin and Torso.CFrame.LookVector*distance as its directio and set the attachment’s WorldPosition to raycast.Position if it hit anything. And combining that with @azqjanna 's comment you should get the result your looking for.

I did this and put it in startercharacterscripts but it’s still really glitchy and teleports randomly

local char = script.Parent.Parent
local rayOrigin = char.HumanoidRootPart.Position
local distance = rayOrigin - char.HumanoidRootPart.CFrame.LookVector

local rayDirection = char.HumanoidRootPart.CFrame.LookVector*distance

script.Parent.Massless = true

local attachment1 = Instance.new("Attachment")
attachment1.Parent = char.HumanoidRootPart
attachment1.Position = Vector3.new(0.001, 0, -6.324)

script.Parent.AlignPosition.Attachment1 = attachment1
script.Parent.AlignOrientation.Attachment1 = attachment1


while true do
	wait()
	local rayOrigin = Vector3.new(char.HumanoidRootPart.Position.X - 10,char.HumanoidRootPart.Position.Y,char.HumanoidRootPart.Position.Z)
	local distance = rayOrigin - char.Torso.CFrame.LookVector
	local rayDirection = char.Torso.CFrame.LookVector*distance
	local raycastResult = workspace:Raycast(rayOrigin, rayDirection)
	if raycastResult ~= nil then
		print(raycastResult.Position)
		attachment1.WorldPosition = raycastResult.Position 
		raycastResult.Instance.BrickColor = BrickColor.new("Really red")
	end
end

In the Steep Steps discord they actually posted a place file with most of the framework laid out for you to make a fangame of.

Place file:
FANGAME.rbxl (44.9 KB)

2 Likes

I found a newer version if you want it: