Football (American) I made using linear velocity travels inconsistent distances

I made a football that is throwable to the Mouse.hit.lookvector using a linear velocity. The velocity is enabled and then after a wait(.1) it is destroyed. This results in the football going varying distances without me moving the cursor. It seems the ball goes either 3 distances; very short, short, and normal. Maybe the wait it causing this inconsistency, I’m not sure what else to use (heartbeat?). Maybe the linear velocity is causing this issue. Maybe it’s just roblox physics being wonky.

It’s because your ball is switching between network owners. Try BasePart:SetNetworkPlayer(Player) to set the network owner.

I would also recommend increasing the .1 to something like .2 to prevent lag from influencing the velocity as much.

Here’s a link to my game to test it out:

https://www.roblox.com/games/47921738…

I’ve tried using “while true do” to keep the velocity on instead of using a wait and that doesn’t work either.

here is the code I’m using to throw the football:

local mouse = game.Players.LocalPlayer:GetMouse() local football = game.ReplicatedStorage.Football local mousehit = mouse.hit local ballpos = football.Position local ballvel = football.Velocity local ballbody = football.BodyVelocity local linearvel = Instance.new(“BodyVelocity”) linearvel.Name = “LinearVelocity” linearvel.MaxForce = Vector3.new(math.huge, math.huge, math.huge) linearvel.Velocity = football.Position - mousehit.p local throw = Instance.new(“BindableEvent”) throw.Name = “Throw” throw.Event:Connect(function() ballpos = football.Position ballvel = football.Velocity ballbody = football.BodyVelocity linearvel = Instance.new(“BodyVelocity”) linearvel.Name = “LinearVelocity” linearvel.MaxForce = Vector3.new(math.huge, math.huge, math.huge) linearvel.Velocity = football.Position - mousehit.p linearvel.Parent = football football.Touched:Connect(function(hit) if hit.Parent:FindFirstChild(“Humanoid”) then throw:Fire() end end) wait(.1) linearvel:Destroy() end) game.Players.LocalPlayer.Character.Humanoid:GetState().Name == “Seated” football.Touched:Connect(function(hit) if hit.Parent:FindFirstChild(“Humanoid”) then throw:Fire() end end)

And here is my baseball code if you would like to see that as well:

local mouse = game.Players.LocalPlayer:GetMouse() local baseball = game.ReplicatedStorage.Baseball local mousehit = mouse.hit local ballpos = baseball.Position local ballvel = baseball.Velocity local ballbody = baseball.BodyVelocity local linearvel = Instance.new(“BodyVelocity”) linear