NPC collides even though CanCollide is false I have tried to use a script to run through all its descendants and turn off cancollide but It doesn't work
try this will turn off cancollide in part. Put this in your script in the part
script.parent.parent.part.CanCollide = false
There's a property in workspace called "HumanoidOnlySetCollisionsOnStateChange" if you set this to Enabled then instead of the game resetting the collision on the humanoids parts every frame it will only set them when the humanoid changes states. Since humanoids change states a lot you will probably also want to either reset the collisions to be what you want whenever the humanoid changes states, or if you don't need the npc to do anything you could change the humanoid's state to physics, which it can't get out of on it's own.
I sort of figured out the problem I discovered a pseudo-fix using physics service collision groups, but I still don't know why I originally had the problem