Hi DredyKabal, this is a pretty complex question, so I thought the best way to answer is would be to give you the steps for achieving this. The suggestion below is a relatively quick mock up, so there is plenty of room for improvement, and depending on how you’re designing your game you might want to do things differently. But this should hopefully be enough to get you started.
I will be using the SK_Slime skeletal mesh as a placeholder for representing the player characters. I modify the skeleton of this skeletal mesh and add two sockets to its hands for holding items:
https://i.imgur.com/ijvmmqJ.png
Next I’m creating a new blueprint for representing our visual player characters in the game. I’m calling it BP_CharacterActor. I add the slime skeletal mesh and a couple of empty static mesh components for holding items. I attach these components to the two sockets we just made:
https://i.imgur.com/AND8sPt.png
Next in the event graph of this actor I add two events that respectively move or turn the actor. These will be driven externally by our DungeonPawn:
https://i.imgur.com/WqqsfTZ.png
I also add some code for changing the appearance of our held item meshes when an item is equipped, as well as an event for animating the skeletal mesh when an item is used:
https://i.imgur.com/k7yPMqx.png
Ok, our new blueprint is done. Time to hook it up to our DungeonPawn. In BP_DungeonPawn I’m creating a new variable that will hold references to all our CharacterActors, as well as keep them paired with the appropriate BP_PlayerCharacter object. It is a TMap with a BP_PlayerCharacter reference as a key and BP_CharacterActor as a value. I’m calling it CharacterActors. At BeginPlay I loop through all the PlayerCharacters stored in the game state, create a CharacterActor for each, place it in a simple grid surrounding the center of our pawn and add them to our CharacterActors TMap, like so:
https://i.imgur.com/8mzjIEN.png
I increase the length of the SpringArm to 200 and hit play. We’re getting somewhere:
https://i.imgur.com/cv4BIRZ.png
As soon as we move the slimes stay put, though. Time to hook up the pawn movement code to the events we made in our CharacterActors earlier.
This is part of the MoveStep event:
https://i.imgur.com/aAwNrnQ.png
And this is part of the MoveTurn section:
https://i.imgur.com/qmndKYI.png
Great, now we’ve got our slimes moving along with our pawn, but we still cannot visualize them equipping items. This is going to take some work.
We go to WBP_Slot, the widget blueprint representing inventory slots. We want to add functionality that can affect other blueprints in our projects, like our CharacterActors without making our code too spaghettified. Event Dispatchers are a good fit for this. I add two new event dispatchers to WBP_Slot, to be called when items are equipped, unequipped or used. I have them take a WBP_Item blueprint as a parameter:
https://i.imgur.com/3PLArgg.png
I call them in them in the following places:
https://i.imgur.com/dVLsw6C.png
https://i.imgur.com/19vZw6f.png
Ok, so far so good. Now we need to tie these interface events to the appropriate slots and call our item equip and use events from there. We can use WBP_MiniCharacter for this, which is the tiny “character sheet” that shows our portrait, health and what items are equipped in our hands. Here is what I do:
https://i.imgur.com/g1COQI6.png
https://i.imgur.com/cxbQgKG.png
And there we are! We are visualizing our characters, they are moving along with our pawn, can equip items and animate when the items are used. Clearly there is much room for improvement, but this should give you something to build upon: