How does ParticleSystem.Particle.velocity behave?
What I want to do: Emit an amount of particles, they all start from 1 point and have randomly different velocity.
What I coded:
[SerializeField] int numberOfParticles = 10; [SerializeField] float speedMin = 10; [SerializeField] float speedMax = 20; ParticleSystem.Particle[] particles = new ParticleSystem.Particle[100]; [ContextMenu("Emit")] void Emit() { targetParticleSystem = GetComponent<ParticleSystem>(); targetParticleSystem.Emit(numberOfParticles); int spawnedParticlesCount = TargetParticleSystem.GetParticles(particles); for (int i = 0; i < spawnedParticlesCount; i++) { particles[i].velocity = Random.Range(speedMin, speedMax) * Random.onUnitSphere; particles[i].position = Vector3.zero; } targetParticleSystem.SetParticles(particles, spawnedParticlesCount); }
What I got:
When I set both speedMin and speedMax to zero, it emits all particles right at the center as expected.
When I set speedMin, and speedMax other than zero, particles's initial positions diverge from the center, and as speed got bigger the initial positions got further from the center.
There's only 1 clue that I could come up with, that is there's a code that applies the velocity after I set the velocity and before first render of particles. But it doesn't seems right, first because you don't have delta time in a same frame. Secondly the step can't be that big.
So, can you guys explain why or give me some help to achieve what I want? P/s: I'm using Unity 5.4.0f3
Your answer
Follow this Question
Related Questions
setting a particle system to overwrite old particles, to make way for the new? 1 Answer
How can I rapidly trigger the same particle system? 2 Answers
Particle System is behind Background Image (2D) 4 Answers
Fade particle emission rate over time 0 Answers
I am having trouble getting these effects to work on Android! Can someone please help me? 0 Answers