Search Issue Tracker
Won't Fix
Votes
0
Found in
2021.3.36f1
2022.3.21f1
2023.2.13f1
6000.0.0b11
Issue ID
UUM-67249
Regression
No
The ParticleSystem "simulate" method is inaccurate when simulating a high count (over 100) of particles while in Play mode
Reproduction steps:
1. Open the “PS_test.zip” project
2. Open the “SampleScene” and Enter Play mode
3. Observe the Scene view (expected result)
4. Leave Play mode and select the two Particle Systems in the Scene
5. In the Inspector window, set the Particle Count (Emission > Rate over Time) to 200
6. Enter Play mode again
7. Observe the Scene view
Expected result: “S” (simulated) Particles are closely simulating their “P” (played) Particle counterparts
Actual result: “S” Particles are not aligning with the “P” Particles
Reproducible with: 2021.3.36f1, 2022.3.21f1, 2023.2.13f1, 6000.0.0b11
Reproducible on: Windows 11
Not reproducible on: No other environment tested
Note:
- Only reproducible in Play mode and in Player
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- DownloadHandlerScript.CompleteContent is called twice when building for WebGL
- Scene view has Y coordinates of the Screen Position node flipped when some of the URP features are disabled
- Volumetric fog shader variants are missing from build when "Strict Shader Variant Matching" is disabled
- Unnecessary modifications clutter the Scene when using a RectTransform driven by a LayoutGroup in a Prefab
- Files in the target folder are deleted without a proper warning when building an iOS project
Resolution Note:
It seems that the random seed being used for new particles it is not the same if we Simulate more than one frame at a time and there is more than one particle to be spawned per frame. Probably related to complex SIMD code required for efficient initialization.
Although we acknowledge that this is not correct, changing this at this point could affect other functionality.
As a workaround, we recommend to simulate each frame, instead of from restart, using the time difference between the reference system and the simulated system.
Another alternative is to get the state using GetPlaybackState, GetTrailsPlaybackState, and GetParticles.