@Ticker S
The methods can be like other have posted above.
The way to do it might go like this:
1. Create a bunch of plane objects, maybe 10 to 25, depending on how many bubbles you want.
2. Texture each plane with a single bubble. The bubble texture would work best if it is just an outline of a bubble with a reflection, but see through with a black background. This is so we can use ghosting to make the bubble transparent
3. Ghost object on for all of the bubbles
4. This can be a tricky part. You don't want all of the bubbles to move in a big lump - all at once. You want them graduated. You can accomplish this in a couple of different ways:
- Upon creating them, stagger their y positions and hide each bubble as it is created.
- Set up and array and store a random life length time for each bubble.
5. Once you have the timing or the spacing figured out for the bubbles, you'll want to move them. Do this within it's own loop. This can be in a function or a subroutine.
The way to move them would be to:
-get the players x,y and z position
-decide on a speed that the bubble floats up
-decide on a maximum height and/or time that the bubble will float
loop through the bubbles
-if the bubble is just starting out (spawning), set it's initial position to the players position
-if the bubble was already spawned and is still alive (it hasn't reached the maximum height or it's life timer isn't up), add speed to the bubble's y position
-when the bubble reaches it max height or it's life time is up, respawn and continue looping
As the player moves, the bubble will start at the player's position. It will float up from there until it's time for it to respawn. So if the player moves away, the bubble will keep floating up where it was and new bubbles will be formed at the player. This loops over and over for an endless supply of respawning bubbles.
Enjoy your day.