In my fight game, I pick up the shield in the floor and then attach it to character. If the enemy also has a shield, I wish my shield and its shield could have blocking collision. However, I find only overlap events are triggered, the two shields go through each other and can’t block.
After some search, I find that the attached actors perhaps only have overlap collision, and have no blocking collision, I’m not sure if there is some solution for the blocking collision between two attached actors in two different characters.
First, it’s a bit unclear what you mean by having both shields have blocking collision.
Do you mean to say that you want a hit event to be fired when the shields touch? Please note that if you’ve attached the shield, chances are that they’re not simulating physics on the shield (but they should still be blocking stuff like arrows, etc).
When you attached them, did you also weld the physics bodies? It should then act like whatever you attached it to. If you are using the Epic-provided Character class, then chances are that you attached the shield to the Mesh, right? That’s set by default to Query Only (No Physics Collision) as well as Simulation Generates Hit Events to false. You might want to change those two things on the shield (so, don’t weld them when you attach).
You might mean that you have a huge shield and the other character’s capsule is not being blocked by it. However, you also don’t want the shield to be affecting YOUR capsule collision component so after double-checking your physics settings as described above, also try calling IgnoreActorWhenMoving. Note: Since I’m not sure how you’re attaching things, safest is to call this twice. Once with the Character as the Target, and the shield as the Actor, and once with the shield as the Target, and the Character as the Actor. That way both actors are ignoring each other but not their general collision channels.
The shield is attached to character(player and enemy character) as child actor. In shield actor, shield static mesh is the root component, and “Block All” is selected for collision. The shield can have OnComponentHit() event with the root capsule component of enemy character, but it cannot have OnComponentHit() with the shield which attached to enemy character, as shown in the image.
Sorry I don’t know to mush about welding shield static mesh to physics body. As I learned in this link :
, the attached actors will have only overlap event, but have no OnComponentHit() event, because the attached actor will have no sweep check. So I wander if there is some way to achieve the effect I draw in the image ?
Thanks.
I tried what you said Silvio Terra but was unable to make a Shield actor (attached to a socket in player mesh) block a Sword actor (attached to a socket in another player mesh). This is an extremely annoying problem, that I would like Epic to find a solution for.