[HELP] Script Efficiency Needed

I have a disable player collision script provided by Roblox, like on some forum page or something made by them. Anyways, the script is causing major lag within my game and is seriously a problem for me now. Any thoughts on how to make this script better?

local PhysicsService, Players = game:GetService("PhysicsService"), game:GetService("Players")
local PlayerCollisionGroupName = "PlayerCharacters"
local previousCollisionGroups = {}
if not PhysicsService:IsCollisionGroupRegistered(PlayerCollisionGroupName) then
	PhysicsService:CreateCollisionGroup(PlayerCollisionGroupName)
	PhysicsService:CollisionGroupSetCollidable(PlayerCollisionGroupName, PlayerCollisionGroupName, false)
end
Players.PlayerAdded:Connect(function(ClientPlayer)
	ClientPlayer.CharacterAdded:Connect(function(Character)

		local function setCollisionGroup(object)
			if object:IsA("BasePart") then
				previousCollisionGroups[object] = object.CollisionGroupId
				PhysicsService:SetPartCollisionGroup(object, PlayerCollisionGroupName)
			end
		end
		local function setCollisionGroupRecursive(object)
			setCollisionGroup(object)
			for _, child in ipairs(object:GetChildren()) do
				setCollisionGroupRecursive(child)
			end
		end
		setCollisionGroupRecursive(Character)
		Character.DescendantAdded:Connect(setCollisionGroup)
		Character.DescendantRemoving:Connect(function(object)
			local previousCollisionGroupId = previousCollisionGroups[object]
			if not previousCollisionGroupId then return end
			local previousCollisionGroupName = PhysicsService:GetCollisionGroupName(previousCollisionGroupId)
			if not previousCollisionGroupName then return end
			PhysicsService:SetPartCollisionGroup(object, previousCollisionGroupName)
			previousCollisionGroups[object] = nil
		end)
	end)
end)

I’m pretty sure roblox deprecated that function. This is how you set a part’s collision group now.

Part.CollisionGroup = PlayerCollisionGroupName
2 Likes

I’ll look into it! Thanks!
30characte_fill_in

1 Like

The answer is simple: Remove the script.
You don’t need it. If you want to stop players from colliding with each other, you can use Player.CharacterAppearanceId instead of disabling collisions.

1 Like