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

Touched event ignoring stationary parts?

Asked by 9 years ago

I've been working on this for a while now, but all of my ideas have failed. I made a block that appears in front of the player when they press a button and expands for a bit before disappearing. It's supposed to damage anything that it touches once as long as it has a humanoid, but things that don't move are never detected.

f = script.Parent.Touched:connect(function(hit)

    local x = hit.Parent:FindFirstChild("Humanoid")

    if x then

        f:disconnect()

        x:TakeDamage(math.random(2, 5))

    end

end)

This is the part of the code that damages humanoids. The rest of the code is in separate scripts (I plan on cleaning things up later). The block is summoned when you press a button. I'll show the other two scripts:

Expanding script (child of a part named Skull):

cf = script.Parent.CFrame
num = 0.3

for i = 1, 4, 0.1 do

    script.Parent.Size = Vector3.new(i, i, i)
    script.Parent.Mesh.Scale = script.Parent.Mesh.Scale + Vector3.new(num, num, num)
    script.Parent.CFrame = cf
    wait()

end

for i = 0, 1, 0.1 do

    script.Parent.Transparency = i
    wait()

end
script.Parent:Destroy()

Summoning script (local script in StarterGui; ignore that there's no delay between presses yet):

p = game.Players.LocalPlayer
m = p:GetMouse()

m.KeyDown:connect(function(k)

    if k == "z" then

        local c = p.Character

        local anim = script.Animation
        local animPlay = c.Humanoid:LoadAnimation(anim)
        animPlay:Play()

        wait(0.3)

        local x = game.ReplicatedStorage.Skull:Clone()
        x.CFrame = c.Torso.CFrame * CFrame.new(5, 0, 0)
        x.CFrame = x.CFrame * CFrame.Angles(0, 300, 0)
        x.Parent = workspace

    end

end)

Any help is appreciated. I've been trying hard to fix this myself.

Answer this question