C# OnParticleTrigger():如何让碰撞器输入粒子?

C# OnParticleTrigger():如何让碰撞器输入粒子?,c#,unity3d,particle-system,C#,Unity3d,Particle System,我正试图扑灭Unity3d中的一场大火。我有两个粒子系统:火和水。由于两个粒子系统不能碰撞,我在火的底部添加了一个长方体碰撞器(选中了isTrigger)。我使用OnParticleTrigger()来破坏火的健康。但是现在我想要有多个火焰,所以我需要知道粒子进入哪个火焰/盒子碰撞器。我知道你不能像OnTriggerEnter()那样获得碰撞器,但是有办法解决这个问题吗 我尝试了OnParticleCollision(),但是水粒子会在盒子碰撞器中反弹(这不是我想要的视觉效果) 每次触发事件我都

我正试图扑灭Unity3d中的一场大火。我有两个粒子系统:火和水。由于两个粒子系统不能碰撞,我在火的底部添加了一个长方体碰撞器(选中了isTrigger)。我使用
OnParticleTrigger()
来破坏火的健康。但是现在我想要有多个火焰,所以我需要知道粒子进入哪个火焰/盒子碰撞器。我知道你不能像
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();
                }
            }
        }
    }
private void OnParticleTrigger()
{
//获取进入长方体碰撞器的所有粒子
列表输入粒子=新列表();
int enterCount=waterPS.GetTriggerParticles(ParticleSystemTriggerEventType.Enter,enteredParticles);
//全力以赴
GameObject[]fires=GameObject.FindGameObjectsWithTag(“Fire”);
foreach(ParticleSystem.Particle-Particle-in-enteredParticles)
{
for(int i=0;i