Detecting Particle Collisions

Is it possible to detect where a stream of particles is colliding? I don't need the particles to bounce or anything crazy like that. I just need to know if it's intersecting a mesh. Is that within the range of Unity's capabilities?

I haven't tried this pefore, but thought of doing something like that for a flamethrower. Check this out, it might help:

http://unity3d.com/support/documentation/Components/class-WorldParticleCollider.html

there is a component called particle collider that you can use to make particles lose energy or bounce or ... when colliding with other particles. there is a check box (bool value) in this component called SendCollisionMessage that if you check it a OnParticleCollision event will be called in all scripts attached to the GameObject containing the particle collider and the GameObject that particles collided with. so you can use this function in your mesh object and do what you want when particles collide with you. as you can see in the sample of documentation you can see the object that you collide with in the passed argument.

using UnityEngine;

using System.Collections;

using System.Collections.Generic;

public class Example : MonoBehaviour

{

public ParticleSystem.Particle[] ParticleList;

private ParticleSystem m_particleSystem;

private GameObject character;
int Score = 0;

void Start()

{
	character = GameObject.FindGameObjectWithTag ("Iz");
	m_particleSystem = GetComponent<ParticleSystem> ();
}

void LateUpdate ()
{
	//This list will be used to store each particle that is alive 
	ParticleList = new ParticleSystem.Particle[m_particleSystem.particleCount];

	//storing particles into a list
	m_particleSystem.GetParticles (ParticleList);

	// Change only the particles that are alive
	for (int z = 0; z < GetComponent<ParticleSystem> ().particleCount; z++) 
	{	
		//getting the position of the player and the particle
		Vector3 dis = ParticleList [z].position - character.transform.position;

		//if it is near
		if(dis.magnitude <= 5)
		{
			//destroy the particle
			ParticleList [z].lifetime = 0;
			//add score
			Score++;
		}
	}

	// Apply the particle changes to the particle system
	m_particleSystem.SetParticles (ParticleList, m_particleSystem.particleCount);
}

}