有没有办法在粒子首次从Unity中的粒子系统发出时为粒子应用函数?

问题描述 投票:0回答:1

当发射粒子时,我想计算粒子的旋转。现在,我正在更新整个粒子系统以朝某个方向旋转,这意味着已经发射的粒子将切换方向,直到它们在粒子系统旋转时死亡。

这是我的旋转功能(在附加到粒子系统的脚本中),用于更新粒子系统。

void lookAtTarget()
    {
        Vector3 lookPos = fingerAim.transform.position - transform.position;
        Quaternion lookRotation = Quaternion.LookRotation(lookPos);
        transform.rotation = Quaternion.Slerp(transform.rotation, lookRotation, Time.deltaTime * 10.5f);
    }

更新功能:

void Update {
   transform.position = player.transform.position;
   lookAtTarget();
}

基本上,我想在粒子首次发射时应用lookAtTarget。无论如何在Unity中如何做到这一点

unity3d particle-system particles
1个回答
1
投票
ParticleSystem m_System;
ParticleSystem.Particle[] m_Particles;
int prevNumParticles = 0;

private void LateUpdate()
{
    InitializeIfNeeded();

    int numParticlesAlive = m_System.GetParticles(m_Particles);

    if (numParticlesAlive != prevNumParticles)
        ParticleControl(m_Particles[0]); //reference the newest particle (might be last in array)

    prevNumParticles = numParticlesAlive;
}

private void ParticleControl(particle)
{
     // do look at for the particle here
}

void InitializeIfNeeded()
{
    if (m_System == null)
        m_System = GetComponent<ParticleSystem>();

    if (m_Particles == null || m_Particles.Length < m_System.main.maxParticles)
        m_Particles = new ParticleSystem.Particle[m_System.main.maxParticles];
}
© www.soinside.com 2019 - 2024. All rights reserved.