The video above shows my system to rappel up a wall. When the player is high up on the wall, the system works just fine. However, when the player is low down on the wall, the rope seems to be very slow to pull the player towards it.
I’ve tried increasing the winch’s responsiveness, speed, etc. and there’s still been no change.
Enabling “PlatformStand” on the humanoid fixes this issue, but I can’t have the player in PlatformStand property enabled or else the player seems to swing freely and causes issues when they’re high up on the wall
elseif char.Torso:FindFirstChild("RappelRope") then
local Rope = char.Torso:FindFirstChild("RappelRope")
local Attachment1 = Rope.Attachment1
if height == 0 then
Rope.WinchTarget += 0.1
elseif height == 1 then
Rope.WinchTarget -= 0.1
end
if horizontal == 0 then
if Attachment1.Position.X < Attachment1.Parent.Size.X/2 - 0.25 then
Attachment1 = Rope.Attachment1
Attachment1.Position += Vector3.new(0.25, 0, 0) -- D
end
elseif horizontal == 1 then
if -Attachment1.Position.X < Attachment1.Parent.Size.X/2 - 0.25 then
Attachment1.Position -= Vector3.new(0.25, 0, 0) -- A
end
end
end
the variables “height” and “horizontal” are passed to this script from a RemoteEvent and control if the player moves left, right, up, or down. Attachment1 is the attachment which is on the roof. I’m simply changing the WinchTarget for the height, and the Attachment1’s position to move left and right.
Here are the settings I created when I made the rope. The only time that the WinchTarget changes is when the player moves up or down, as seen in this part of the last script: