I’m following along with the tutorial that teaches how to make players not collide with one another according to https://developer.roblox.com/en-us/articles/Player-Player-Collisions.
I made some alterations to help understand the script better, however when the game is run, I receive multiple errors titled PhysicsService::SetPartCollisionGroup() : Passed in Instance parameter has a WorldModel ancestor
, seemingly for every part in the character.
local PhysicsService = game:GetService('PhysicsService')
local playerCollisionsGroup = 'Players'
PhysicsService:CreateCollisionGroup(playerCollisionsGroup) -- Contains parts
PhysicsService:CollisionGroupSetCollidable(playerCollisionsGroup, playerCollisionsGroup, false) -- Sets collision group to not collide with self
local Players = game:GetService("Players")
-- personally, too recursive
---------------------------------------------------
local previousCollisionGroups = {}
---------------------------------------------------
local function setCollisionGroup(object)
if object:IsA('BasePart') then
previousCollisionGroups[object] = object.CollisionGroupId -- log current collision group
PhysicsService:SetPartCollisionGroup(object, playerCollisionsGroup) -- replace with new collision group
end
end
local function setCollisionGroupRecursive(object)
setCollisionGroup(object)
for i,v in ipairs(object:GetChildren()) do
setCollisionGroupRecursive(v)
end
end
local function resetCollisionGroup(object)
local previousCollisionGroupId = previousCollisionGroups[object] -- original collision group
if not previousCollisionGroupId then return end
local previousCollisionGroupName = PhysicsService:GetCollisionGroupName(previousCollisionGroupId) -- ^^
if not previousCollisionGroupName then return end
PhysicsService:SetPartCollisionGroup(object, previousCollisionGroupName) -- replace current collision group with original
previousCollisionGroups[object] = nil -- garbage collection takes care of
end
-------------------------------------------------------------
local function onCharacterAdded(character)
setCollisionGroupRecursive(character)
character.DescendantAdded:Connect(setCollisionGroup)
character.DescendantRemoving:Connect(resetCollisionGroup)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onCharacterAdded)
Maybe it’s a simple typo, but I can’t seem to solve the error. The script given in the documentation works correctly.