- Home /
2D detecting if the player is someplace touching part of a particle system
I'm making a platform game where you have to follow the flow of a series of particle systems to get to the end level. I would like to make it so that if you aren't touching the particles, your health starts to drop. If you get back into the flow of particles, it starts to go back up.
So My initial thought was to cover the area that the particles would probably be in most of the time with a box collider, so that when you aren't colliding with it, your health drops, etc. Firstly, I don't know how this would work, since you would have to be able to continue moving, you would not be able to actually collide with it, just tell when you are in the area it covers, do you see what I mean?
But if there is a more accurate way involving the particle systems, to actually check the particles to see if the character is going through or touching it, that would be even better. The hardest part here is that while it needs to detect wether or not the character is there in the particle or touching it or whatever, it can't actually block the player or impede the progress of the player.
Does anyone know of a function or scripting term that fits this description? Sorry if this isn't stated very nicely...
Answer by Tepei · May 04, 2015 at 01:17 PM
Your first solution is the best i think.
You have to use a trigger collider and the OnTriggerStay function.
The trigger collider will not stop your player movement.
To calculate all the collision for each particles is more expansive.
The particle system only works with 3d collider.
I'm trying to make a custom particle emitter to do this in 2d.. But i think it's possible also to take the position of each particles and make a 2Draycast.
Anyway the first solution is the best i think..
Okay, thanks for the input! Do you think using this:http://docs.unity3d.com/ScriptReference/$$anonymous$$onoBehaviour.OnParticleCollision.html somehow might work?