2016-07-06 92 views
0

如果在父节点被禁用时如何播放粒子系统效果?Unity如果父母被禁用时如何播放粒子系统效果?

我想在我的障碍位置上发挥粒子系统效应。问题是,我的粒子,如果我的对象的孩子,当我禁用父(对象)粒子系统得到的禁用它,并没有发挥影响

我怎样才能在相同的位置障碍物以及障碍物何时被禁用/销毁。

回答

1

创建GameObject调用ParticlesHolder。附上下面的脚本,然后确保将编辑器的大小更改为2。把两个粒子放到每个插槽。这个想法是粒子不会是disabled

public class ParticleHolder : MonoBehaviour 
{ 

    public ParticleSystem[] effects; 

    public void playParticle(int particleNumber, Vector3 particlePos) 
    { 
     if (effects != null && effects[particleNumber] != null) 
     { 
      if (effects[particleNumber].isPlaying) 
       effects[particleNumber].Stop(); 

      ParticleSystem tempPart = Instantiate(effects[particleNumber], particlePos, new Quaternion()) as ParticleSystem; 
      tempPart.Play(); 
     } 

    } 
} 

现在,添加下面的代码的代码在你的Example脚本:

ParticlesContainer particle; 

在你Start()功能:

particle = GameObject.Find("ParticlesHolder").GetComponent<ParticlesContainer>(); 

在你OnCollisionEnter()功能:

particle.playParticle(0, transform.position); 

在这个例子中,数组中的第一个粒子将会播放。

如果有两个粒子,01是通过两种有效值。如果有3颗粒然后012是三个值中传递。

就像你有public void SetDamage(int a_damage)功能,您可以添加public void SetParticle(int particleId)函数来设置要播放的粒子。

+0

我想要一个普通的粒子在一个普通的物体上发挥作用,而一个爆炸粒子在特殊的物体上发挥作用 – John

+0

@Groude我知道你的问题。你读过答案了吗?是你做的吗? – Programmer

+0

是的,没有任何反应 – John