I’m making a top down view space game. I’m using Rendercam.
I need to make a star background with parallax (both position and scale, as you can zoom in and out).
My current solution is to place 9 sprites (3x3) in a game object and child it to the Rendercam game object. I then have a script that handles the movement and scale parallax. The 3x3 seamlessly looping grid means I can recenter the game object after sufficient movement.
I don’t like this solution because it feels janky, and the sprites have to be large to account for the maximum zoom-out.
I’d ideally have 2 or 3 layers (to give the illusion of some stars being closer than others), but would be happy with an elegant single layer solution.
just a side note. If you are aiming at some realism you don’t need more than ONE background layer; stars are usually very very distant, so distant that you don’t see any parallax in space but the movement of objects (ships, bullets…) against the background. If you are near a planet then the planet may have a different parallax but only it.
But, of course, if you want a 80’s star field scrolling then you need more levels. But it is just a wrong design propagating in the media…
You could always have stars on one layer and space debris, meteorites, comets and stuff on closer ones. That would still be wrong in a lot of ways, but for different reasons.
I think this is a perfectly good approach, as long as each sprite aligns properly with each other.
3x3 sprites suggests you can travel both horizontally and vertically I guess?
And by using sprites, I assume you have prerendered textures to switch between?
Are they all the same texture? (just positioned differently so that you can move and zoom in/out)
In any case, I’d like to highlight the possibility to use a screen space quad, that always
fills the screen perfectly. I don’t have a small example for you, but perhaps others can help here. Found this example.
You can use the shader to zoom in/out by scaling the uv coordinates. By doing so you can also produce multiple layers in the same quad by sampling the texture several times per pixel, each time with a scaled uv coordinate.
Anyways, just thought I should mention it. (Sounds like a fun task for someone to help experiment with )