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


The GetCollisionGroupId function returns the id of the collision group with the specified name.

This function will throw an error if no group with the given name exists.


Name Type Default Description

The name of the collision group being retrieved.


Return Type Summary


The id of the retrieved collision group, or nil if no such group exists.

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