Better way to make Bullets?

I made my first gun recently that fires bullets from a tool. There is a delay in the shot and it’s not super accurate so I was wondering if there is a better way to shoot bullets. Here are my scripts:
Here’s a LocalScript inside of the Tool Handle:

local gun = script.Parent

local replicatedStorage = game:GetService("ReplicatedStorage")

local RemoteEvent = game.ReplicatedStorage:WaitForChild("TennisBall")



RemoteEvent:FireServer(gun.Position, mouse.Hit.p)



And here’s a script in ServerScriptService:

local replicatedStorage = game:GetService(“ReplicatedStorage”)
local RemoteEvent = game.ReplicatedStorage:WaitForChild(“BulletCreator”)


local Bullet ="Part")
Bullet.Name = "Bullet"
Bullet.Parent = game.Workspace
Bullet.Shape = Enum.PartType.Ball
Bullet.Size =, 1.5, 1.5)

local distance = (mousePos - gunPos).magnitude
local speed = 500
Bullet.CFrame =,mousePos)
Bullet.Velocity = Bullet.CFrame.lookVector * speed




Any suggestions are appreciated. Thanks!

I think Fastcast will be the best option to use for guns :slight_smile:

1 Like

Part of the delay may be n the creation of the part itself, which is why PartCache was made and I think the Fastcast sample gun uses the system.

I apologize for not responding sooner. Actually the part spawns, the delay is in the shooting. When I shoot it the part spawns and then shoots.

Put the bullet’s parent at the end of the code. This can be why you have a delay.