1 using System.Collections;
2 using System.Collections.Generic;
5 public class Parallaxing : MonoBehaviour
7 [SerializeField] private Vector2 parallaxEffectMultiplier;
8 [SerializeField] private bool infiniteHorizontal;
9 [SerializeField] private bool infiniteVertical;
11 private Transform cameraTransform;
12 Vector3 lastCameraPosition;
13 private float textureUnitSizeX;
14 private float textureUnitSizeY;
18 cameraTransform = Camera.main.transform;
19 lastCameraPosition = cameraTransform.position;
20 Sprite sprite = GetComponent<SpriteRenderer>().sprite;
21 Texture2D texture = sprite.texture;
22 textureUnitSizeX = texture.width / sprite.pixelsPerUnit;
23 textureUnitSizeY = texture.height / sprite.pixelsPerUnit;
26 private void LateUpdate()
28 Vector3 deltaMovement = cameraTransform.position - lastCameraPosition;
29 transform.position += new Vector3(deltaMovement.x * parallaxEffectMultiplier.x, deltaMovement.y * parallaxEffectMultiplier.y);
30 lastCameraPosition = cameraTransform.position;
34 if (Mathf.Abs(cameraTransform.position.x - transform.position.x) >= textureUnitSizeX)
36 float offsetPositionX = (cameraTransform.position.x - transform.position.x) % textureUnitSizeX;
37 transform.position = new Vector3(cameraTransform.position.x + offsetPositionX, transform.position.y);
41 if(infiniteHorizontal)
43 if (Mathf.Abs(cameraTransform.position.y - transform.position.y) >= textureUnitSizeY)
45 float offsetPositionY = (cameraTransform.position.y - transform.position.y) % textureUnitSizeY;
46 transform.position = new Vector3(transform.position.x, cameraTransform.position.y + offsetPositionY);