OnParticleTrigger():如何让对撞机进入一个粒子?

OnParticleTrigger(): How to get the collider a particle entered?

我正在尝试在 Unity3d 中灭火。我有 2 个粒子系统:火和水。由于 2 个粒子系统无法碰撞,我在火的底部添加了一个盒子碰撞器(选中 isTrigger)。我用OnParticleTrigger()来伤害火的健康。但是现在我想要多次点火,所以我需要知道粒子进入了哪个 fire/box 对撞机。我知道你不能得到像 OnTriggerEnter() 这样的对撞机,但有没有办法解决它?

我试过OnParticleCollision(),但是箱体碰撞器的水粒子反弹(这不是我想要的视觉效果)。

每个触发事件我都会得到所有进入对撞机的粒子。然后,对于这些粒子中的每一个,我用 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();
                }
            }
        }
    }