From e372a00d8484c7ca8087903a7c8a8266756e3d92 Mon Sep 17 00:00:00 2001 From: Sweet Tini Date: Sun, 2 Feb 2020 11:01:59 -0500 Subject: [PATCH] Add parallax scrolling to level --- Assets/ParallaxBackground.cs | 29 +++++++++++++++++++++-------- Assets/Scenes/LevelOne.unity | 10 +++++----- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/Assets/ParallaxBackground.cs b/Assets/ParallaxBackground.cs index 17dc4f0..a79546e 100644 --- a/Assets/ParallaxBackground.cs +++ b/Assets/ParallaxBackground.cs @@ -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); } } diff --git a/Assets/Scenes/LevelOne.unity b/Assets/Scenes/LevelOne.unity index 33cfec5..03e12dc 100644 --- a/Assets/Scenes/LevelOne.unity +++ b/Assets/Scenes/LevelOne.unity @@ -47677,14 +47677,14 @@ SpriteRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 + m_SortingLayerID: 1067504601 + m_SortingLayer: -1 m_SortingOrder: 0 m_Sprite: {fileID: 21300000, guid: e33008ddf5593464c90eced40f3f28e8, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 m_FlipY: 0 - m_DrawMode: 0 + m_DrawMode: 2 m_Size: {x: 16, y: 16} m_AdaptiveModeThreshold: 0.5 m_SpriteTileMode: 0 @@ -47703,8 +47703,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: af4fa3c5d20488d4fa39fb11819d3f97, type: 3} m_Name: m_EditorClassIdentifier: - camera: {fileID: 1337282922} - renderer: {fileID: 1727766210} + baseCamera: {fileID: 1337282922} + baseRenderer: {fileID: 1727766210} scrollRate: {x: 0.4, y: 0.4} --- !u!1 &1895829829 GameObject: