Add parallax scrolling to level

This commit is contained in:
Sweet Tini
2020-02-02 11:01:59 -05:00
parent 7875611cba
commit e372a00d84
2 changed files with 26 additions and 13 deletions

View File

@@ -4,24 +4,37 @@ using UnityEngine;
public class ParallaxBackground : MonoBehaviour
{
public Camera camera;
public SpriteRenderer renderer;
[SerializeField] Camera baseCamera;
[SerializeField] SpriteRenderer baseRenderer;
public Vector2 scrollRate = Vector2.one * .4f;
Vector2 tileSize;
Vector2 offset = new Vector2(8f, 7.5f);
// Start is called before the first frame update
void Start()
{
baseRenderer.transform.position = new Vector3(
baseCamera.transform.position.x - offset.x,
baseCamera.transform.position.y - offset.y,
baseRenderer.transform.position.z);
tileSize = baseRenderer.size;
baseRenderer.size = new Vector2(
(Mathf.Ceil(tileSize.x / (offset.x * 2f)) + 2f) * tileSize.x,
(Mathf.Ceil(tileSize.y / (offset.y * 2f)) + 2f) * tileSize.y);
}
// Update is called once per frame
void Update()
{
//var currentPos =
//var offset = new Vector3(8f, -7.5f, 0f);
//renderer.transform.position = camera.transform.position + ((camera.transform.position * new Vector3(scrollRate.x, scrollRate.y, 0f)) - offset);
var depth = baseRenderer.transform.position.z;
var basePosition = (Vector2)baseCamera.transform.position - (offset * new Vector2(1f, -1f));
var scrollOffset = baseCamera.transform.position * scrollRate;
scrollOffset = new Vector2(scrollOffset.x % tileSize.x, scrollOffset.y % tileSize.y);
var position = basePosition - scrollOffset - tileSize * new Vector2(1, -1);
baseRenderer.transform.position = new Vector3(position.x, position.y, depth);
}
}