aboutsummaryrefslogtreecommitdiffstats
path: root/Assets/Scripts/InfiniteBackground.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/InfiniteBackground.cs')
-rw-r--r--Assets/Scripts/InfiniteBackground.cs41
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