使粒子到达特定位置后消失

时间:2018-11-30 14:12:02

标签: c# unity3d particle-system particles

我正在尝试在游戏中创建出血效果,我想使粒子消失的时间不是一段时间,而是在粒子到达低于粒子发射器所有者的位置之后消失。

我尝试附加尝试执行此操作的脚本,但是我似乎无法使粒子消失。

public class Blood : MonoBehaviour
{

    [SerializeField]
    private ParticleSystem ps;
    [SerializeField]
    private Transform owner;


    void Update()
    {
        ParticleSystem.Particle[] particles = new ParticleSystem.Particle[ps.particleCount];

        int num = ps.GetParticles(particles);
        for (int i = 0; i < num; i++)
        {
            if (particles[i].position.y < owner.position.y)
            {
                particles[i].remainingLifetime = 0f;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

有点晚了,但是ParticleSystem.Particle是一个值类型(结构),因此您只在操作本地副本。致电

ps.SetParticles(particles)

最后将它们复制回粒子系统。