Equipping a tool with a constraint in it (i.e HingeConstraint, RopeConstraint…) pulls me toward wherever the constraint was when last equipped. A player travelling a good distance would then be pulled back to wherever they were last when they equipped it. So far facing this with both a RopeConstraint and a HingeConstraint and not been able to find any guidance online on this. No solution found and workarounds I’ve tried haven’t worked. Got two examples:
HingeConstraint
I have a compass tool with a needle that is attached to its case with a HingeConstraint; this will then calculate an angle between the compass and north and apply that as a TargetAngle (tried to do this first with CFrame… got nowhere really).
Equipping it by the spawn + walking a distance and you’ll see my character float back + the needle shooting towards it. Setting the Position of the needle to an offset of the case while the tool is in the backpack doesn’t work.
RopeConstraint
Another instance with a fishing rod that uses a RopeConstraint. The float is first welded to the tool. The player then does a mouse click, when the weld is disabled and the rope extends by increments until hitting the sea level. Then what the player is meant to do is wait until a fish appears, they click, the rope retracts and welds itself back to the tool. Of course, players may just unequip without having clicked and walk away, which will then do this if they equip it a distance away (–on Unequipped() the weld is enabled once again but that doesn’t seem to do anything):
function Unequipped()
if cloneMesh ~= nil then
cloneMesh:Destroy()
end
for partIndex = 1, #floatTextures do
floatTextures[partIndex].Transparency = 0
end
Caught = false
FP1.Enabled = false
FP2.Enabled = false
FP3.Enabled = false
Float.CanCollide = false
Float.RopeConstraint.Length = 1 --lengthening the rope back to 1
Float.WeldConstraint.Enabled = true --welding it back even when unequipped does not work
Humanoid.JumpPower = 50
Humanoid.WalkSpeed = 16
Fishing = false
end
I’ve also tried to set the CFrame.Position of the needle to be a constant offset off of the handle when it’s in the backpack like this:
while backpackFlag and wait() do
tool.Needle.Position = tool.Handle.Position + tool.Needle.Position
end
Also doesn’t fix the issue and instead glitches out (needle just disappears).
No idea how to solve this. Hoping for some sort of solution rather than changing the use of constraints as I much prefer them to working with CFrame and the like. Anyone else experienced this + figured out some workarounds/ideas?