I am making a fishing rod, the idea is to change the lure CFrame to the target point and give it velocity,
(the lure has an attachment with RopeConstraint). the problem that when I change the RopeConstraint to RodConstraint and it does not work correctly for some reason, and I can’t find the problem.
Using RopeConstraint (working fine):

Using RodConstraint:

(I just changed the “rope” to “rod” and everything else is just the same).
script:
local function fire(part, startPoint, targetPoint)
--Anti-gravity effect: add a BodyForce to counter gravity
local bf = Instance.new("BodyForce")
bf.Force = Vector3.new(0, workspace.Gravity * part:GetMass() * antiGravity, 0)
bf.Parent = part
-- Calculate how far we have to travel
local distance = (targetPoint - startPoint).magnitude
-- Since speed = displacement / time, our speed is:
local speed = 25--75
-- Position our part at the start, pointing to the target
part.CFrame = CFrame.new(startPoint ,targetPoint)
-- Shoot the part
part.Velocity = part.CFrame.lookVector * speed
end
local lure = game.ServerStorage.Items.Fishinglure:Clone()
lure.Parent = workspace
lure:MoveTo(playerCharacter.HumanoidRootPart.Position + Vector3.new(0, 8, 0)) -- lure starting position
playerCharacter.HumanoidRootPart.Anchored = true -- stop player from moving
fire(lure.Fishinglure, playerCharacter.HumanoidRootPart.Position + Vector3.new(0, 6, 0), mouseHit.p) -- fire the lure
wait(0.1)
--creating rope
local distance = (rodPart.Position - mouseHit.p).Magnitude
local rod = Instance.new("RodConstraint", rodPart) -- just changed this to: rod = Instance.new("RopeConstraint", rodPart)
rod.Name = "FishingRod"
rod.Attachment0 = rodPart.Attachment
rod.Attachment1 = lure.PrimaryPart.Attachment
rod.Length = distance
rod.Thickness = 0.05
rod.Visible = true