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

Bullets are creating explosions twice when hitting multiple parts?

Asked by 8 years ago
Edited 8 years ago

I'm pretty confused on the workaround for this. My gun's bullets, when hitting multiple parts, runs the touched event twice before the bullet is destroyed.

01missile.Touched:connect(function(hit)
02    if hit.CanCollide ~= false or hit.Name == "Right Leg" or hit.Name == "Left Leg" or hit.Name == "Left Arm" or hit.Name == "Right Arm" then
03        if hit.Transparency ~= 1 then -- The above could lag?
04            missile.Parent = nil -- Still creates the explosion
05            local E = Instance.new("Explosion")
06            E.BlastPressure = S.ExplosionPressure
07            E.BlastRadius = S.ExplosionRadius
08            E.DestroyJointRadiusPercent = (S.RangeBasedDamage and 0 or 1)
09            E.ExplosionType = S.ExplosionType
10            E.Position = missile.Position -- It creates two explosions!!!!
11            E.Parent = game.Workspace
12            E.Hit:connect(function(hitPart, partDistance)
13                if (not hitPart:IsDescendantOf(Character)) and hitPart.Name == "Torso" then
14                    print("Hit "..hitPart.Name.."!")
15                    local humanoid =  hitPart.Parent:FindFirstChild("Humanoid")
View all 29 lines...

So, due to this, it creates two explosions, thus harming any humanoids nearby twice. How would I prevent this from happening?

1
Try missile:Destroy() instead of missile.Parent = nil and after you test it report it here please. superalp1111 662 — 8y
0
It works! Thanks! coolyoshipower 42 — 8y

1 answer

Log in to vote
0
Answered by
Jexpler 63
8 years ago

What you could do is say that if the script is in the bullet. If not then change script.parent to where the bullet is.

1script.Parent.Touched:connect(function(hit)

Then tell the script that after the bullet hits something to stop giving explosions.

Ad

Answer this question