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