0

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

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

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

1 回答 1

0

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

ps.SetParticles(particles)

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

于 2020-09-03T09:16:36.960 回答