I have this script:
function FireBullet(pos)
script.Parent.Handle.LaserShot:Play()
local p=Instance.new("Part")
p.Parent=game.Workspace
p.FormFactor="Custom"
p.Size=Vector3.new(0.4,0.4,1)
p.Name="LaserBullet"
p.CFrame=CFrame.new(script.Parent.Handle.Position)
p.TopSurface="Smooth"
p.BottomSurface="Smooth"
p.Color=Color3.new(0,255,0)
p.CanCollide=false
p.Anchored=false
local l=Instance.new("PointLight")
l.Parent=p
l.Color=Color3.new(0,255,0)
l.Shadows=true
l.Range=15
local v=Instance.new("BodyVelocity")
v.Parent=p
v.velocity=pos-script.Parent.Handle.Position
local g=Instance.new("BodyGyro")
g.Parent=p
local po=script.Parent.Handle.Position
g.cframe=CFrame.new(Vector3.new(po.x,po.y,po.z),(CFrame.new(pos).p-Vector3.new(po.x,po.y,po.z)).unit*300)
p.Touched:connect(function(part)
if part.Parent:FindFirstChild("Humanoid") then
if not part.Parent.Name==script.Parent.Parent.Name then
script.Parent.Handle.LaserHit:Play()
part.Parent.Humanoid:TakeDamage(25)
p:remove()
end
end
end)
wait(10)
if p.Parent==game.Workspace then
p:remove()
end
end
script.Parent.Equipped:connect(function(mouse)
mouse.Button1Down:connect(function()
FireBullet(mouse.Hit.p)
end)
end)
I want this script to make a bullet appear at the handle of the tool, then move to where the player clicked to fire the bullet.
It should work but the only problem is that the bullet won't move after I have clicked, is there something wrong with the script? The output won't give me anything.

4 comments
Try increasing the maxForce and velocity of the BodyVelocity, because currently it is quite low, and will not do much.
Increased it to math.huge and it still didn't move
Hm. I haven't worked with BodyVelocities that much, instead preferring to go with CFrame, so I can't think of any decent way of fixing this. Also, try doing p:breakJoints(), for it may have welded to the handle. Oh, and math.huge will just make it do nothing for velocity. Make the velocity something decent.
That kind of helped