When Parts are under a WorldModel that is not workspace CanCollideWith doesn’t respect CollisionGroups and will always return true
Expected behavior
I expect CanCollideWith to return the correct value regardless of which WorldRoot the Parts are under
Script
local function testWithWorldModel()
local PhysicsService = game:GetService("PhysicsService")
local WorldModel = Instance.new("WorldModel")
WorldModel.Parent = workspace
local TEST = "TEST"
PhysicsService:RegisterCollisionGroup(TEST)
PhysicsService:CollisionGroupSetCollidable(TEST, TEST, false)
local part1: Part = Instance.new("Part")
part1.Name = "part1"
part1.Parent = WorldModel
local part2: Part = Instance.new("Part")
part2.Name = "part2"
part2.Parent = WorldModel
part1.CollisionGroup = TEST
part2.CollisionGroup = TEST
print("WorldModel", part1:CanCollideWith(part2))
WorldModel:Destroy()
end
local function testWithWorkspace()
local PhysicsService = game:GetService("PhysicsService")
local TEST = "TEST"
PhysicsService:RegisterCollisionGroup(TEST)
PhysicsService:CollisionGroupSetCollidable(TEST, TEST, false)
local part1: Part = Instance.new("Part")
part1.Name = "part1"
part1.Parent = workspace
local part2: Part = Instance.new("Part")
part2.Name = "part2"
part2.Parent = workspace
part1.CollisionGroup = TEST
part2.CollisionGroup = TEST
print("Workspace", part1:CanCollideWith(part2))
part1:Destroy()
part2:Destroy()
end
testWithWorkspace()
testWithWorldModel()