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

Is it possible to create change Touched to onClick.MouseClick?

Asked by 7 years ago

I have this morph and want to make it more realistic by changing the onTouched brick to a ClickDetector.

In this script I have tried to change the bottom part where it says script.Parent.Touched:connect(onTouched) to ClickDetector.MouseClick:connect(onMouseClick) but it doesn't seem to morph. I did insert the ClickDetector.

function onTouched(hit)
    if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent:findFirstChild("Chest") == nil then
        local g = script.Parent.Parent.Chest:clone()
        g.Parent = hit.Parent
        local C = g:GetChildren()
        for i=1, #C do
            if C[i].className == "Part" or "Union" then
                local W = Instance.new("Weld")
                W.Part0 = g.Middle
                W.Part1 = C[i]
                local CJ = CFrame.new(g.Middle.Position)
                local C0 = g.Middle.CFrame:inverse()*CJ
                local C1 = C[i].CFrame:inverse()*CJ
                W.C0 = C0
                W.C1 = C1
                W.Parent = g.Middle
            end
                local Y = Instance.new("Weld")
                Y.Part0 = hit.Parent.Torso
                Y.Part1 = g.Middle
                Y.C0 = CFrame.new(0, 0, 0)
                Y.Parent = Y.Part0
        end

        local h = g:GetChildren()
        for i = 1, # h do
            h[i].Anchored = false
            h[i].CanCollide = false
        end

    end
end

script.Parent.Touched:connect(onTouched)

Please help me, thank you!

1 answer

Log in to vote
0
Answered by 7 years ago
Edited 7 years ago

The ClickDetector returns the player object, not a part of the character. You need to grab the Character from the player

function onClicked(plr)
    character=plr.Character --Grab the Player's Character
    if character:findFirstChild("Humanoid") and character:findFirstChild("Chest") == nil then
        local g = script.Parent.Parent.Chest:clone()
        g.Parent = character
        local C = g:GetChildren()
        for i=1, #C do
            if C[i].className == "Part" or "Union" then
                local W = Instance.new("Weld")
                W.Part0 = g.Middle
                W.Part1 = C[i]
                local CJ = CFrame.new(g.Middle.Position)
                local C0 = g.Middle.CFrame:inverse()*CJ
                local C1 = C[i].CFrame:inverse()*CJ
                W.C0 = C0
                W.C1 = C1
                W.Parent = g.Middle
            end
                local Y = Instance.new("Weld")
                Y.Part0 = character.Torso
                Y.Part1 = g.Middle
                Y.C0 = CFrame.new(0, 0, 0)
                Y.Parent = Y.Part0
        end

        local h = g:GetChildren()
        for i = 1, # h do
            h[i].Anchored = false
            h[i].CanCollide = false
        end

    end
end

script.Parent.ClickDetector.MouseClick:connect(onClicked)

More on the ClickDetector here

3
y no use local variables? :/ OldPalHappy 1477 — 7y
0
Bad habit of mine BobserLuck 367 — 7y
Ad

Answer this question