blob: 5c28723d61a0dff0c092f4500b78194917c26a15 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
using System.Collections;
using UnityEngine;
public class InfiniteBackground : MonoBehaviour
{
[SerializeField] Camera mainCamera;
[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 + (mainCamera.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);
}
}
|