gather-and-defend/Assets/Scripts/KeepLevelAnchored.cs
2023-07-09 14:23:33 -04:00

56 lines
1.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class KeepLevelAnchored : MonoBehaviour
{
Camera _camera;
Rect _levelBound;
// Start is called before the first frame update
void Start()
{
LevelManager.Instance.LevelLoaded += CalculateBound;
CalculateBound(LevelManager.Instance.CurrentLevel);
_camera = Camera.main;
}
private void CalculateBound(GatherAndDefend.LevelEditor.Level level)
{
_levelBound = level.CalculateBounds();
}
void OnDestroy()
{
LevelManager.Instance.LevelLoaded -= CalculateBound;
}
// Update is called once per frame
void Update()
{
//move right
var xMax = _levelBound.xMax;
var width = _camera.ScreenToWorldPoint(Vector2.one * _camera.pixelWidth).x;
var rightDiff = width - xMax;
var camPos = _camera.transform.position;
camPos.x -= rightDiff;
_camera.transform.position = camPos;
//resize
var xMin = _levelBound.xMin;
var left = _camera.ScreenToWorldPoint(Vector2.zero).x;
var center = _camera.ScreenToWorldPoint(Vector2.one * _camera.pixelWidth / 3).x;
var leftDiff = xMax - xMin;
var centerDiff = xMax - center;
var ratio = centerDiff / leftDiff;
_camera.orthographicSize /= ratio;
return;
}
}