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

How can I make a part that lets everything go through except for the player?

Asked by 1 year ago

Hello, so I wanted to make a part that lets npcs, like zombies go through but not the players, how can I make that?

Thanks for reading!

2 answers

Log in to vote
0
Answered by
manith513 121
1 year ago

This isn’t a request site, show us your code or attempt before making a request. If you had looked into this even a little bit you would’ve been able to do it easily. Even then, just set can collide to false on the part (in studio) and then make a local script that makes that part’s can collide to true. This makes players unable to touch it.

Ad
Log in to vote
0
Answered by 1 year ago

Here's some code that might help somewhat, it's not perfect but its a starting point. essentially the code checks if a humanoid touched the part and if so, it checks to see if that humanoid is a player by checking the players list and if a match is found it sets the collision on a door to be true.

If you want to test it just go into workspace and make a part called door and put this script inside it and tweak it to see what works for you

local door = workspace:WaitForChild("door)

door.Anchored = true

door.CanCollide = false

local players = game:GetService("Players")

local start_script = 0

players.PlayerAdded:Connect(function(player)
    start_script = 1
end)


function check_if_allowed(otherTouch)
    if start_script == 1 then

        if otherTouch.Parent:FindFirstChildWhichIsA("Humanoid") then

            local humanoid = otherTouch.Parent:FindFirstChild("Humanoid")

            local h_name = tostring(humanoid.Parent)

            if players:FindFirstChild(h_name) ~= nil then

                door.CanCollide = true

                wait(1)

                door.CanCollide = false

            end

        end

    end


end

door.Touched:Connect(check_if_allowed)


Answer this question