Problem with PhysicsService

Hello devs!
I tryed to do for one model cant collide other model but i got error:
Parameter 1 must be BasePart in SetPartCollisionGroup.
Here code:

game:GetService("PhysicsService"):CreateCollisionGroup("a")
game:GetService("PhysicsService"):SetPartCollisionGroup(workspace.Model1,"a")
game:GetService("PhysicsService"):CreateCollisionGroup("b")
game:GetService("PhysicsService"):SetPartCollisionGroup(workspace.Model2,"b") 
game:GetService("PhysicsService"):CollisionGroupSetCollidable("a","b",false)

This works for parts but with models it does error
Sorry for me grammar

You should make a variable for PhysicsService.

PS = game:GetService("PhysicsService")
PS:CreateCollisionGroup("a")
PS:SetPartCollisionGroup(workspace.Model1,"a")
PS:CreateCollisionGroup("b")
PS:SetPartCollisionGroup(workspace.Model2,"b") 
PS:CollisionGroupSetCollidable("a","b",false)

It’s much easier that way.

Also, the error is saying that the 1st parameter in :SetPartCollisionGroup() should be a Part, and not a Model.

PS = game:GetService("PhysicsService")
PS:CreateCollisionGroup("a")
PS:SetPartCollisionGroup(workspace.Model1.Part,"a")
PS:CreateCollisionGroup("b")
PS:SetPartCollisionGroup(workspace.Model2.Part,"b") 
PS:CollisionGroupSetCollidable("a","b",false)

But how i can to do this with models? I tryed to do grenade which can go trough players, i write physics but i got this annoying bug

Try unions. I believe they should work.

You should loop through all of the parts of that model and set their collision group to whatever you want.

local PhysicsService = game:GetService("PhysicsService")

local function SetModelCollisionGroup(model, groupName)
    for _, item in ipairs(model:GetDescendants()) do
        if item:IsA("BasePart") then
            PhysicsService:SetPartCollisionGroup(groupName)
        end
    end
end

SetModelCollisionGroup(workspace.Model1, "a")
SetModelCollisionGroup(workspace.Model2, "b")
1 Like

Idk how this works but still thanks this helps a lot!