What do you want to achieve?
For a character’s limbs to collide with everything else while inside of a ragdoll. I already have a script for the ragdolling.
What is the issue?
The script isn’t changing the “CanCollide” property inside of a character model.
What solutions have you tried so far?
I checked the Dev Hub, and the new Roblox Assistant, but I couldn’t find any answers.
Here is my script:
local Torso = script.Parent.Torso
script.Parent.Humanoid.RequiresNeck = false
script.Parent.Humanoid.PlatformStand = true
script.Parent["Right Arm"].CanCollide = true
script.Parent["Right Leg"].CanCollide = true
script.Parent["Left Arm"].CanCollide = true
script.Parent["Left Leg"].CanCollide = true
script.Parent.Head.CanCollide = true
for _, Object in ipairs(Torso:GetChildren()) do
if Object:IsA("Motor6D") then
Object.Enabled = false
end
end
wait(1)
script.Parent.Humanoid.RequiresNeck = true
script.Parent.Humanoid.PlatformStand = false
script.Parent["Right Arm"].CanCollide = false
script.Parent["Right Leg"].CanCollide = false
script.Parent["Left Arm"].CanCollide = false
script.Parent["Left Leg"].CanCollide = false
script.Parent.Head.CanCollide = false
for _, Object in ipairs(Torso:GetChildren()) do
if Object:IsA("Motor6D") then
Object.Enabled = true
end
end
Are there any errors in the output? Adding a :WaitForChild() is better, as it waits for the children to load before. script.Parent:WaitForChild("Left Leg").CanCollide = false
Character limbs unfortunately cannot have their CanCollide property set to true because of how Humanoids act. However, you can get around this problem by creating an invisible part that is welded to each body part of the character.
local Character = script.Parent
local Torso = script.Parent.Torso
local HumanoidRootPart = script.Parent.HumanoidRootPart
for _,Objects in pairs (Character:GetChildren()) do
if not Objects:IsA("BasePart") or Objects.CanCollide then
continue
end
if Objects == Torso or Objects == HumanoidRootPart then
continue
end
local Invisible_Limb = Instance.new("Part")
Invisible_Limb.Size = Objects.Size
Invisible_Limb.Name = Objects.Name .. "_Collide"
Invisible_Limb.Massless = true
Invisible_Limb.Transparency = 1
Invisible_Limb:PivotTo(Objects.CFrame)
local Limb_Weld = Instance.new("Weld")
Limb_Weld.Part0 = Invisible_Limb
Limb_Weld.Part1 = Objects
Invisible_Limb.Parent = Objects
Limb_Weld.Parent = Invisible_Limb
end
Thank you so much! But why would Roblox set it up that way? Another thing I found is that you can change the CanCollide property inside the explorer if you’re testing in Studio, and that will work just fine…