当发射粒子时,我想计算粒子的旋转。现在,我正在更新整个粒子系统以朝某个方向旋转,这意味着已经发射的粒子将切换方向,直到它们在粒子系统旋转时死亡。
这是我的旋转功能(在附加到粒子系统的脚本中),用于更新粒子系统。
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中如何做到这一点
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];
}