I been trying to make your character have this but I can’t achieve this even using collision groups
I believe you can do this through the game settings.
NOTE: I may be wrong.
I don’t think that’s possible. The lower torso, upper torso, and the head are always set to can collide true.
I want to set arms and legs to true
Why do you need every part of the player to have collisions?
He may be doing a racing game not sure or maybe an obby
So when he dies and ragdolls his arms and legs don’t just go through the ground
Oops I read the post wrong. You CAN do this. Just loop through the player and check if the the object is a base part or mesh part. Then set the can collide of the object to true.
I tried but it sets itself back to false
Oh then I think it’s impossible. There might be a solution but I am not sure.
Solution
You can accomplish this through welding invisible collidable parts to each body part you’d like to be collidable. Try to have each of the parts imitate the size of each part, and make sure they aren’t named identically to any other body parts as this may cause many aspects of the humanoid to freak out.
It’s a hacky solution, however it does indeed work.
What I’ve seen from most ragdoll scripts is it making a clone of your character so it doesn’t have the legs go through the ground.
Hi first time poster, i dont really know how to use this reply system but i made it work. and i know this post was made almost 3 years ago. anyways here is the script. LocalScript in StarterCharacterScripts
video
game[“Run Service”].Stepped:Connect(function()
for i,v in pairs(game.Players.LocalPlayer.Character:GetDescendants()) do
if v:IsA(“BasePart”) and v.CanCollide == false then
v.CanCollide = true
end
end
end)
make a server script aswell and put this in it as it will make parts and things server only work with the collision. this should go in StarterCharacterScripts, here it is
–
game[“Run Service”].Stepped:Connect(function()
for i,v in pairs(script.Parent:GetChildren()) do
if v:IsA(“BasePart”) then
v.CanCollide = true
end
end
end)
for _ , v in pairs(character:GetDescendants() do
if v:IsA("BasePart") then
v.CanCollide = true
end
end
You can add the following script to ServerScriptService:
game:GetService('Players').PlayerAdded:Connect(function(player)
repeat wait() until player.Character
for i, v in pairs(player.Character:GetChildren()) do
v.CanCollide=true
end
end)
Wouldnt work as it sets itself back to false. you would need a loop like i said, make sure to test the solutions you post
I know this is old, but what works is setting child.Locked to false at a delay. Something like this in a server script:
-- in startercharacterscripts
local char = script.Parent;
task.wait(0.1);
for i,v in char:GetChildren() do
if v:IsA("Part") or v:IsA("BasePart") or v:IsA("MeshPart") do -- all types of parts
v.Locked = false; -- unlock it
v.CanCollide = true; -- set cancollide
v.Locked = true; -- not sure if you have to do this, but I did it anyway.
end
end
It’s also worth noting that if you are dealing with setting cancollide multiple times (like a ragdoll script, for example), you should use task.delay and set that task to a variable so that you can cancel it if need be. (Sorry, I seriously don’t know how to make posts and my last post was HORRIBLY formatted)