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

Why does my ray only cast once rather than over and over?

Asked by
Jexpler 63
5 years ago
Edited 5 years ago

I'm making a turret, and I have this script which is supposed to fire at players while they're in it's range. The part named range is the area which people are supposed to be shot if they're touching. The boolean value I have is suppose to do this: If it's true, the ray should keep casting. if it's false, it shouldn't cast. I'm later going to add a script that makes it false if it isn't touching. The issue is, right now it only casts the ray once.

script.Parent.Parent.Range.Touched:Connect(function(hit)
    repeat
    if script.Parent.Parent.Range.Touched then
        if hit.Parent:FindFirstChild("Humanoid") and script.Parent.Value.Value == false then
            script.Parent.Value.Value = true
            local char = hit.Parent
            local ray = Ray.new(script.Parent.CFrame.p, (char.HumanoidRootPart.CFrame.p-script.Parent.CFrame.p).unit*1000)
            local part, position = workspace:FindPartOnRay(ray, script.Parent, false, true)
            local beam = Instance.new("Part", workspace)
            beam.BrickColor = BrickColor.new("Royal purple")
            beam.FormFactor = "Custom"
            beam.Material = "Neon"
            beam.Transparency = .25
            beam.Anchored = true
            beam.Locked = true
            beam.CanCollide = false
            local distance = (script.Parent.CFrame.p - position).magnitude
            beam.Size = Vector3.new(.3,.3,distance)
            beam.CFrame = CFrame.new(script.Parent.CFrame.p, position) * CFrame.new(0, 0, -distance / 2)
            game:GetService("Debris"):AddItem(beam, .1)
        end
    end
    wait(1)
    until script.Parent.Value == false
end)
0
Can we see the hierarchy of your objects? GetGlobals 343 — 5y
0
Ignore the click detector Jexpler 63 — 5y

Answer this question