Physic based Armor and Weapon

Hi everyone!

I like to add physic based ARMOR and WEAPON to my game.
That means, the armor have a physical protection system, including penetrator resistance. Also weapons need a specific amount of damage to penetrate the armor (like in most tank based games, with front armor is strong and side armor is weaker etc. you know what i mean).

  1. Do i need static mesh AND skeletal mesh in one actor, to switch between static mesh, if the actor is placed in the world and skeletal mesh to equip the armor/weapon to my character and attach them to it? Or can i remove static mesh and only use skeletal mesh for drop in the world too? Its a question about performance… is static mesh realy realy better in performance instead of skeletal mesh with physics?

  2. If question 1 is answered, and i just need skeletal mesh for everything, how can i attach the actor (armor/weapon) to actor (charactermesh) and sync this with the animations? Because i got every time issues, the skeletal mesh is not correct synced with character animation.
    → Attach Actor to Actor + (set relative transform of the armor/weapon to character mesh, but how?)

  3. If armor/weapon ACTOR (not component) is attached to character mesh and works well with the animations. How can i add the physical armor system to armor/weapon actor?
    OR, i dont need to add the armor/weapon actor to charactermesh actor, because when i just add the skeletal mesh of armor/weapon to charactermesh, it works too with physical based armor system? But how can i get access to the informations of the armor/weapon, when its not attached as actor (thats the reason why i whould like to attach the actor + all informations inside of the actor, to my charactermesh)?

I am using armor/weapon for itself, there is no database information where they are default saved, because every armor/weapon can become unique, so i need the specific informations inside of the armor/weapon actor to work with them. I hope you can understand what i am meaning. I dont want to make a armor with default database informations.

Example for a better understanding:

Player A = equiped with breastplate (skeletal mesh).
Front breastplate armor power of 1000.
Side breastplate armor power of 700.
Rear breastplate armor power of 500.

Player B = equiped with a pistole (skeletal mesh too), with a damage power of 1100.

Player B pistole projectile hit, player A front breastplate armor. It penetrates with 1100 damage compared to 1000 armor = 100 damage to health of player A.

Same situation. Player B hit player A at the rear breastplate side armor. It penetrates with 1100 damage compared to 500 armor = 600 damage to health of player A.

Same situation again: Player B hit player A on the right leg (there is no armor). Player A becomes 1100 damage to health, because there is no armor that gives protection.

I hope you can understand what i am meaning. Also armor have different hitzones. How can i add this feature in to my game? I cant find any tutorials on youtube, because about 99% only use general armor system and not invidual/physic based.

No one have a answer or solution?

most of this depends on your implementation but i’ll give you a general guide.

  1. if you want Skeletal meshes just use those not both, both can be complicated as it needs to be the root component to properly use physics.
  2. Modular Characters in Unreal Engine | Unreal Engine 5.1 Documentation | Epic Developer Community
  3. you can give the Armor a PhysicalMaterial, on hit return the material to get the ArmorPower and then use a DotProduct to test if you hit it from the front/side/back

Thank you, i give them a try.
I am thinking too, to use Skeletal Mesh only…
Static Mesh and Skeletal Mesh at the same time, gives many issues. Motion Matching have many problems with them (by raising the legs in some situations etc.)

1 Like