- Home /
Resolution Independent Scrolling Background
I'm doing a 2D vertical shooter and use a scrolling sprite starfield to create the illusion of flying through space. I accomplish this by placing two starfields in the scene one above the other, moving them down at speed, and when the top edge of the bottom one hits the bottom of the screen, moving it up to the top.
I don't include any way of actually detecting the bottom of the screen, and instead just plugged in values that I figured out from the scene. Like this:
public class scriptSpriteStarfield : MonoBehaviour {
public float speed = 5F;
void Update () {
float bottomPosition = -14.5F;
float topPosition = 28f;
transform.Translate(Vector3.down * speed * Time.deltaTime,Space.World);
if(transform.position.y <= bottomPosition){
transform.position = new Vector3(transform.position.x,topPosition,transform.position.z);
}
}
}
I'm currently testing my game at different resolutions, and thus rescaling the starfield, like this:
public class scriptResizeforAndroid : MonoBehaviour {
[HideInInspector]public scriptSceneManager manager;
void Start () {
manager = GameObject.FindGameObjectWithTag("GameController").GetComponent<scriptSceneManager>();
#if UNITY_ANDROID
float oldObjectWidth = transform.localScale.x;
float newObjectWidth = oldObjectWidth * manager.nativeHeight / manager.nativeWidth * Screen.width / Screen.height;
Vector3 scaleMe = new Vector3(newObjectWidth,newObjectWidth,newObjectWidth);
transform.localScale = scaleMe;
#endif
}
}
This has the effect of bringing the starfields out of their perfect tile with each other. How can I ensure that they tile and scroll perfectly regardless of the resolution (besides leaving them at their original scale)?
Your answer
Follow this Question
Related Questions
Stretching Background sprite 4 Answers
How do I downsize all textures for mobile version? 3 Answers
Developing on multiple resolutions 1 Answer
Background and UI scalings are wrong 1 Answer