Explanation:
For a couple of days, I've been learning how to make a ledge grab and a wall jump system and have gotten a fairly decent understanding. But I've run into some quality-of-life things for the code that I want to tackle. So far, the script below will only work properly (e.x: find a ledge proper ledge and wall) if I put it in a loop. I wanted to see if I could make the code look better without the loop because if I remove the loop, I simply will only get the wall. Can I get a hand with this?
Code:
-- Ledge Detection local ledge = false local point1 = root.CFrame.p local point2 = root.CFrame.lookVector * 5 local orientation = false local rot = character.HumanoidRootPart.CFrame - character.HumanoidRootPart.CFrame.p for i = 1, 25 do point1 = point1 + Vector3.new(0, .3, 0) point2 = point2 + Vector3.new(0, .3, 0) local ray = Ray.new(point1, point2) local hit, pos, normal = workspace:FindPartOnRay(ray, game.Workspace.Living) if pos and hit and (hit.Name ~= "Branches" or hit.Name ~= "Leaves" or hit.Name ~= "BranchPart") then if hit.Name ~= "NoClimb" or hit.Name ~= "No_Climb" then if not orientation then orientation = pos end end end if not hit and orientation then ledge = true end end -- Decision if hit then Remotes.Inputs:FireServer(plr, {Type = "Special", Button = "Wall"}); if not ledge then print("Wall") -- Body Pos + Body Velocity else print("Ledge") -- Body Pos + Lerp Or Tween end end