So basically, my goal here is to make it so that once a player joins the game, the game will automatically set the player character's collisongroup to the custom one I made "PlayerGroup", which has the ID 1. However, whenever I playtest the game on studio, only the player's head and RootPart has a collisiongroupID of 1. The unions, accessories, and everything else has a groupID of 0, yet when I print the part's ID in the script it prints out a 1. I'm just not sure what's going on here, or how to fix it.

local Players = game:GetService("Players")
local PhysicsService = game:GetService("PhysicsService")

local PlayerGroup = "Player"
PhysicsService:CreateCollisionGroup(PlayerGroup)


local function setCollisionGroupRecursive(object)
	if object:IsA("BasePart")then
		PhysicsService:SetPartCollisionGroup(object, PhysicsService:GetCollisionGroupName(1))
		print(object.CollisionGroupId)
	end
	for i, child in ipairs(object:GetChildren()) do
		setCollisionGroupRecursive(child)
	end
end


local function onCharacterAdded(character)
	setCollisionGroupRecursive(character)
end
 
local function onPlayerAdded(player)
	player.CharacterAdded:Connect(onCharacterAdded)
end
 
Players.PlayerAdded:Connect(onPlayerAdded)