hr = game:GetService("RunService").Heartbeat:Connect(function(dt)
local margin = 0.01 * 60
local pos = --not leaking the code
bullet.CFrame = -- not leaking the code
aim = aim - drop
The position is based on velocity and time, so you should take time into account. dt is delta time also known as the change in time, and to calculate the change in position with that is to do dt*velocity
I don’t really know what most of your code is really doing but probably change margin to be:
I solved my own problem by just multiplying drop with the dt. Thanks to everyone that helped and especially @TheGrandBraker for suggesting to multiply the delta!