首页 > 解决方案 > 使粒子到达某个位置后消失

问题描述

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

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

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;
            }
        }
    }
}

标签: c#unity3dparticle-systemparticles

解决方案


有点晚了,但是 ParticleSystem.Particle 是一个值类型(结构),所以你只是在操作一个本地副本。称呼

ps.SetParticles(particles)

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


推荐阅读