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)