We use cookies on this site to enhance your user experience
Collapse Sidebar




The CollisionGroupId property describes the ID number of the part’s collision group. Parts start off in the Default group whose ID is 0. Although this property can be directly changed, it is recommended to instead manipulate the collision group of a part using the name of the group with the /PhysicsService/SetPartCollisionGroup function. You can find the ID of a collision group by using /PhysicsService/GetCollisionGroupId.

This value cannot be negative, and cannot exceed /PhysicsService/GetMaxCollisionGroups. Invalid IDs are clamped.

Code Samples


This example demonstrates one basic use of collision groups.

The code below attempts to get a group named “Test”, and creates a group this group if it does not already exist. Then, it sets a BasePart|part named Part1’s collision group to “Test”.

If this group is the first collision group you’ve made in your game, it’s Id will be 1.

Parts in the same collision group will interact with other collision groups and with each other a predetermined way. Collision groups can be collidable or not collidable - as set by PhysicsService/CollisionGroupSetCollidable and checked by PhysicsService/CollisionGroupsAreCollidable.

local physicsService = game:GetService("PhysicsService")

-- returns a valid group id (int) or nil
function getGroupId(name)
	-- GetCollisionGroupId will throw if it does not exist
	local ok, groupId = pcall(physicsService.GetCollisionGroupId, physicsService, name)
	return ok and groupId or nil

-- returns a valid group id (int) or nil
function getOrCreateGroupId(name)
	local ok, groupId = pcall(physicsService.GetCollisionGroupId, physicsService, name)
	if not ok then
		-- Create may fail if we have hit the maximum of 32 different groups
		ok, groupId = pcall(physicsService.CreateCollisionGroup, physicsService, name)
	return ok and groupId or nil

-- sets the specified part's collision group to the group with 
-- given group id
function setPartCollisionGroup(part, name)
	physicsService:SetPartCollisionGroup(part, name)

-- returns the id of part's collision
function getPartGroupId(part)
	return part.CollisionGroupId

print("Get 'Test' Group:", getGroupId("Test")) -- prints nil
print("Get/Create 'Test' Group:", getOrCreateGroupId("Test")) -- prints 1
print("Get Id of 'Test' Group:", getGroupId("Test")) -- prints 1
print("Setting Part1's collision group...")
setPartCollisionGroup(game.Workspace.Part1, "Test")
print("Part1's Collision Group Id:", getPartGroupId(game.Workspace.Part1)) -- prints 1