Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why is this gun script not shooting straight when I turn my helicopter's guns?

Asked by 10 years ago
local mouse = game.Players.LocalPlayer:GetMouse()

mouse.KeyDown:connect(function(key)
    if key == "f" then
        Barrel = script.Parent.Parent.Parent.Character.Experimentalheli.Controls.Barrel
        Killscript = script.Script
        c = Instance.new("Part")
        c.Parent = game.Workspace
        c.Name = "Bullet"
        c.BrickColor = BrickColor.new("Bright yellow")
        c.Size = Vector3.new(1, 1, 4)
        c.BottomSurface = "Smooth"
        c.TopSurface = "Smooth"
        c.Position = Barrel.Position
        c.CanCollide = false
        b = Instance.new("BlockMesh")
        b.Scale = Vector3.new(0.3, 0.3, 1)
        b.Parent = c
        t = Instance.new("BodyThrust")
        t.force = Vector3.new(0, -2000, -130000)
        t.Parent = c
        a = Killscript:clone()
        a.Parent = c
        Barrel.Firesound:Play()
    end
end)

I'm new at scripting but yet I managed to make a functional helicopter

1 answer

Log in to vote
0
Answered by 10 years ago

Well first of all, the force of the BodyThrust is always the same magnitude and the same direction, no matter where you're facing, so that's why. I would recommend using a BodyVelocity instead of a BodyForce because a bodyforce will just cause the bullet to keep accelerating instead of going at constant speed, whereas bodyvelocity keeps it at a constant velocity.

To get the direction of how you want the bullet to travel, we use something called a lookVector. A lookVector is basically a vector3 with a magnitude of 1 that points in the direction that a cframe is facing. To fix your script, we replace this:

t = Instance.new("BodyThrust")
t.force = Vector3.new(0, -2000, -130000)
t.Parent = c

With this:

t = Instance.new("BodyVelocity")
t.maxForce = Vector3.new(math.huge, math.huge, math.huge) --This gives the bodyvelocity infinite power, which prevents it from being affected by the bullet's weight
t.velocity = Barrel.CFrame.lookVector * 100 --This makes the velocity of the brick the direction that the barrel is facing. The "* 100" is gives the vector a magnitude of 100, which means that the speed of the bullet will be 100 studs per second in whatever direction the barrel is facing
t.Parent = c

Hope this helped!

0
Thanks! Also I love your gun kit infact im using it on my FPS game supermarioworld323 45 — 10y
Ad

Answer this question