Found the strange situation.
I want to build an anti-torpedo weapon system that will be able to hit torpedoes, torpedo has HP and if its HP goes to zero it will be destroyed
I’m using the same projectile BP for both types of ammo, projectile like a shell and projectile like a torpedo.
On Component Hit event I do simple logic to differentiate logic for projectiles.
The oddity of the situation is basically the projectile hits the torpedo, but sometimes the torpedo hits the projectile. In the second case, the torpedo stops and I cannot understand why this is happening.
How UE is defining what hits what? ![]()
How does it look in the build, first couple of torpedoes were destroyed without issue but then it went wrong

Haven’t found how to fix this issue and still don’t understand how UE decides what hits what
Any ideas?
Some quick question:
- How is the projectile hierarchy set up?
- Why do you need to check for components from the hit result?
- Arent the 2 branches doing the same thing?
- Sphere is used for one-way shield detection only
- To apply damage to components, I need to get ref on them
- Yes, both doing the same
upper branch for the case if the projectile hit torpedo - in this case, all things work ok
lower branch for the case if the torpedo hit projectile - in this case, the torpedo stops moving, I suggest that it is connected with collision properties, it blocks projectile, probably I need to use overlap to prevent such situations
I still don’t understand how UE decide what hits what
Fixed the issue.
- Changed collision between projectiles from block to overlap
- Make the same logic from OnComponentBeginOverlap

