- Home /
Trigger only one collider?
I am making a 2D knights vs goblins type of game. Each characters attack is dealt by a trigger box that is activated when they are attacking. My problem is there are going to be swarms of enemies in the game, and when lets say the player swings his sword, it knocks every one back because the trigger is activated in all of them. What I am trying to get to happen is have the player/weapons trigger only deal damage to one enemy at a time, so the player would only knock back one out of a certain number of enemies, not the whole group. Please note that all the enemies have the same tags, and layers. Also, I am using OnTriggerEnter2D in the enemies controller to know when to take damage and knockback. Any way I can do this easily and efficiently? Thanks!
Answer by slavo · Dec 18, 2016 at 10:25 PM
One way how you can solve this is by getting all enemies hit by sword with overlap box
https://docs.unity3d.com/ScriptReference/Physics2D.OverlapBox.html
sort them by distance and call any (eg.TakeDamage(float value)) function on desired component.
Do you have any alternate solution ideas? This one seems to complicated as I would have to then locate each and every enemy and then somehow call the correct one. Please note I've only been in c# for about 3 months. If there aren't any different methods, can you give me an example of how I would go about doing this? Like getting the closest one then running the code on the selected closest one
Hups, I was talking about OverlapBoxAll https://docs.unity3d.com/ScriptReference/Physics2D.OverlapBoxAll.html. That gives you all enemies in box. And you sort them by distance.
If you use only OverlapBox, it gives you only one enemy within box. But I am not sure if it is closest or radnom. Then you just get component whit your function and call it.
Can not think about easier way. Sorry
Your answer
Follow this Question
Related Questions
OnTriggerEnter and Exit seem to not be working 1 Answer
OnTriggerEnter2D not working 2 Answers
2D Collision detection not working 0 Answers
Is this normal behavior for edge collider triggers (2D)? 1 Answer
PolygonCollider2D edit problem 1 Answer