Collision groups just don't work

Your script likely doesn’t work because you are using CharacterAppearanceLoaded, which doesn’t always wait for all parts of the character to be ready. Some parts, like accessories or tools, are added later, so they do not receive the collision group.

Try using this script

local phys = game:GetService("PhysicsService")
phys:CreateCollisionGroup("plrtrue")
phys:CollisionGroupSetCollidable("plrtrue", "plrtrue", false)

game.Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function(char)
		local function setCollision(part)
			if part:IsA("BasePart") then
				phys:SetPartCollisionGroup(part, "plrtrue")
			end
		end

		for _, part in pairs(char:GetDescendants()) do
			setCollision(part)
		end

		char.DescendantAdded:Connect(setCollision)
	end)
end)