I'm trying to simulate pressure with a collection of spherical particles in a Unity game I'm building. A couple notes about the problem:
- The goal is to fill a constantly changing 2d space/void with small, frictionless spheres. The game is trying to simulate the ever-growing pressure of more objects being shoved into this space.
- The level itself is constantly scrolling from left to right, meaning if the space's dimensions are not changed by the user it will automatically get smaller (the leftmost part of the space will continually scroll off-screen).
I'm wondering what some approaches are that I can take to tackling these problems...
- Knowing when to detect when there is space to fill and then add spheres to the space.
- Removing spheres from the space when it is shrinking.
- Strategies to simulate pressure on the spheres such that they "explode outwards" when more space is created.
The current approach I am contemplating is using a constantly moving wall, that is off screen and moves with the screen, as this image illustrates:
This moving wall will push and trap the spheres into the space. As for adding new spheres, I was going to have either (1) spheres replicate themselves upon detecting free space, OR (2) spawn them at the left side of the space (where the wall is) - pushing the rest of the spheres to fill the space. I foresee problems with idea #1 because this likely wouldn't really create/simulate pressure; idea #2 seems more promising, but raises the question of how to provide a location for these new sphere particles to spawn (and the ramifications of spawning them when there IS no space).
Thanks so much in advance for your wisdom!