В каждом триггерном событии я получаю все частицы, попавшие в коллайдер. Затем для каждой из этих частиц я проверяю, в какой коробочный коллайдер они вошли с collider.bounds.Contains()
, и повреждаю огонь, которому принадлежит коллайдерный ящик. Я не знаю, является ли это лучшим способом сделать это (вероятно, нет), но пока это работает.
private void OnParticleTrigger()
{
//Get all particles that entered a box collider
List<ParticleSystem.Particle> enteredParticles = new List<ParticleSystem.Particle>();
int enterCount = waterPS.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enteredParticles);
//Get all fires
GameObject[] fires = GameObject.FindGameObjectsWithTag("Fire");
foreach (ParticleSystem.Particle particle in enteredParticles)
{
for (int i = 0; i < fires.Length; i++)
{
Collider collider = fires[i].GetComponent<Collider>();
if (collider.bounds.Contains(particle.position))
{
fires[i].GetComponent<Fire>().Damage();
}
}
}
}