diff options
Diffstat (limited to 'Assets/Scripts/InfiniteBackground.cs')
-rw-r--r-- | Assets/Scripts/InfiniteBackground.cs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Assets/Scripts/InfiniteBackground.cs b/Assets/Scripts/InfiniteBackground.cs new file mode 100644 index 0000000..d587040 --- /dev/null +++ b/Assets/Scripts/InfiniteBackground.cs @@ -0,0 +1,41 @@ +using System.Collections; +using UnityEngine; + +public class InfiniteBackground : MonoBehaviour +{ + [SerializeField] GameObject cam; + [SerializeField] float parallaxEffect = 0.3f; + + internal Vector2 pos; + internal float spriteExtentX; + + void Start() + { + Vector2 pos = transform.position; + spriteExtentX = GetComponent<SpriteRenderer>().bounds.size.x / 2; + } + + void FixedUpdate() + { + float camExtentX = Camera.main.orthographicSize * Screen.width / Screen.height; + float newPosX = pos.x + (cam.transform.position.x * parallaxEffect); + + if (newPosX + spriteExtentX <= Camera.main.transform.position.x + camExtentX) + { + var clone = Instantiate(this.gameObject); + clone.transform.position = new Vector3(newPosX + spriteExtentX, transform.position.y, transform.position.z); + } + else if (newPosX - spriteExtentX >= Camera.main.transform.position.x - camExtentX) + { + var clone = Instantiate(gameObject); + clone.transform.position = new Vector3(newPosX - spriteExtentX, transform.position.y, transform.position.z); + } + + transform.position = new Vector3(newPosX, transform.position.y, transform.position.z); + } + + void OnBecameInvisible() + { + Destroy(gameObject); + } +}
\ No newline at end of file |