using System; using UnityEngine; public class Dimensions : MonoBehaviour { [Tooltip("How much height for player panels")] public float panelHeightPercentage; [Tooltip("How much height is the empty space between board and death zone")] public float emptySpacePercentage; [Tooltip("Aspect ratio of the playground")] public float playGroundAspect; public Camera mainCamera; public EdgeCollider2D topC, bottomC, leftC, rightC; public SpriteRenderer playGround; public SpriteRenderer playerPanelTop; public SpriteRenderer playerPanelBottom; public SpriteRenderer background; public static Dimensions Singleton; private void Awake() { Singleton = this; GetComponents(); } private void OnValidate() { GetComponents(); } private void GetComponents() { topL = topC.GetComponent(); bottomL = bottomC.GetComponent(); } public float top, bottom, left, right; public float boardTop, boardBottom; public float Width => right * 2; public float Height => top * 2; private LineRenderer topL, bottomL; private void Update() { float height = mainCamera.orthographicSize * 2; float allWidth = mainCamera.aspect * height; float panelHeight = height * panelHeightPercentage / 100f; float playGroundHeight = height - 2 * panelHeight; float playGroundWidth = playGroundHeight * playGroundAspect; float emptySpaceHeight = playGroundHeight * emptySpacePercentage / 100f; top = playGroundHeight / 2; bottom = -top; right = playGroundWidth / 2; left = -right; boardTop = top - emptySpaceHeight; boardBottom = -boardTop; Vector2 v1 = new Vector3(left, 0); Vector2 v2 = new Vector3(right, 0); Vector2 v3 = new Vector3(0, top); Vector2 v4 = new Vector3(0, bottom); topC.transform.position = new Vector2(0, top); bottomC.transform.position = new Vector2(0, bottom); leftC.transform.position = new Vector2(left, 0); rightC.transform.position = new Vector2(right, 0); topC.points = new[] {v1, v2}; bottomC.points = new[] {v1, v2}; leftC.points = new[] {v3, v4}; rightC.points = new[] {v3, v4}; const float lineWidth = 0.5f; Vector3 offset = Vector3.up * lineWidth / 2; topL.positionCount = bottomL.positionCount = 2; var v12 = new[] {(Vector3) v1 - offset, (Vector3) v2 - offset}; topL.SetPositions(v12); v12 = new[] {(Vector3) v1 + offset, (Vector3) v2 + offset}; bottomL.SetPositions(v12); playGround.transform.rotation = Quaternion.Euler(0, 0, 90); playGround.size = new Vector2(playGroundHeight, playGroundWidth); playerPanelTop.transform.position = new Vector2(0, (height + Height) / 4); playerPanelBottom.transform.position = new Vector2(0, -(height + Height) / 4); playerPanelTop.size = playerPanelBottom.size = new Vector2(allWidth, panelHeight); background.size = new Vector2(allWidth, playGroundHeight); } }