Is it possible to put cancollide true for players legs and arms?

It is possible to do this, unfortunately it isn’t as easy as setting it initially and then being done with it. It requires being constantly updated bound to RunService.Stepped as this is fired just after humanoid changes and just before physics calculations.

Setting it just once allows for the humanoid changes to revert it, so instead it must be done each frame. Setting the legs to CanCollide true seems to give rather odd elastic collision behaviour so I’d avoid changing legs as they collide just fine as they are, ignoring animations when calculating collisions.

This will need to be done on the client, I’d recommend putting this local script inside StarterPlayer.StarterCharacterScripts:

local parts = {}
for _, child in pairs(script.Parent:GetChildren()) do
	if child:IsA("BasePart") and string.find(child.Name, "Arm") then
		table.insert(parts, child)
	end
end

game:GetService("RunService").Stepped:Connect(function()
	for _, part in pairs(parts) do
		part.CanCollide = true
	end
end)

The problem with this approach is that the animations will affect collisions, so you may want to consider not altering the CanCollide property of the arms and instead weld some invisible, CanCollide true parts where the arms are situated when idle.

10 Likes