How is equipping items normally handled?

So imagine a character with multiple possible shirts, accessories, etc. Are these items seperate from the character and just get moved into position, or is there several character models one for each possible combination then rendered depending on which is equipped. I can understand a sword or gun is put into the hand slot, then rotated etc. but shirts and pants, i mean the body shape moves so then that would have to make the shirt model move in the same way. Seems very complicated. Can someone explain in short how this is normally done?

I’m going to assume you are talking about 3D (not sure if it’s the same for 2D). The most common method is binding each mesh to the skeleton. For example, let’s say you create a basic character with separated body parts (a head, a body, left arm, right arm, etc). You would parent each mesh to the skeleton and then weight paint… all pretty standard stuff.
_
but now you want to model a helmet that the player can equip. Well you would simply take the existing “head” model and add a helmet (you could join them into a single mesh). You would then parent this new item to the existing skeleton structure and weight paint.
_
In-game, you would simply destroy the “current” head and instantiate the “new” head.
_
Again, this is in regards to blender, but when you model a character (again, let’s say separate parts. a head, left leg, right leg, etc) when you export it you should get a parent container, and as children of this parent, the actual player meshes (head, arms, legs) and the rig. You would simply delete the current head mesh model, and instantiate the new head model as a child of the parent container or as a child of the associated empty gameobject placeholder.
_
There’s probably a more efficient way to do this but I’ve used it many times for RPG prototypes where the player can equip things like armour, gloves, helmets, hats, etc (even works for stuff like beards, eyes, etc)
_
So you have a rigged model imported into Unity. The basic setup is like this. Right click the Head > create empty gameobject > unparent the empty game object from the Head mesh (parent it to the OG parent… in this case it’s BasePlayer) and rename it “Head Slot”. Now you can delete the child of Head Slot and instantiate a new head model as a child of Head Slot.
_
So when you create a new head model (let’s say an iron helmet) you parent it to the skeleton rig and weight paint (in blender or Maya). When you instantiate the iron helmet as a child of the Head Slot, it will be correctly animated and follow any bone constraints etc.