Basically, this doesn’t have anything to do with :ApplyImpuse(). It has to do with Roblox changing the paintball’s network owner in the middle of its flight path. If you read the article I sent, you can find an example of how you could fix this. What I would do is set the network ownership to the person who shot the paintball so there isn’t a visual delay for them.
Hmm ok, that sounds right but whenever I tested it the paintball just fell to the ground and :ApplyImpulse() didn’t do anything. Here’s my script and a video:
local ts = game:GetService("TweenService")
local debris = game:GetService("Debris")
game.ReplicatedStorage.FireEvent.OnServerEvent:Connect(function(plr,pos)
local char = plr.Character
local sniper = char:FindFirstChild("Sniper")
local paintball = game.ServerStorage.Paintball:Clone()
paintball.Parent = game.Workspace
paintball.CFrame = CFrame.new(sniper.ShootPart.CFrame.Position, pos)
paintball:SetNetworkOwner(plr)
paintball:ApplyImpulse(paintball.CFrame.LookVector * 500)
end)
I suggest you use BodyVelocity, yes I know they are deprecated but they don’t require attachments unlike other movers(plus they are easier to set up), you can use MaxForce and Debris to make it last for a certain amount of time.
Yeah I did use Body Velocity before, but if I use :ApplyImpulse() then gravity will take care of the bullet drop for me. And Body Velocity has the same weird glitchy thing were the bullet lags too, so I still need help.
Thank you bro, that did fix the problem, it just didn’t work with :ApplyImpulse() for some reason, but it did with AssemblyLinearVelocity. Thank you so much for the help!