44 lines
1.0 KiB
C#
44 lines
1.0 KiB
C#
using UnityEngine;
|
|
|
|
public class CameraController : MonoBehaviour
|
|
{
|
|
public float ScreenBuffer;
|
|
public float MinSize;
|
|
|
|
private Camera cam;
|
|
private PlayerController player;
|
|
|
|
private void Awake()
|
|
{
|
|
cam = GetComponent<Camera>();
|
|
player = FindObjectOfType<PlayerController>();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
UpdateCamera();
|
|
}
|
|
|
|
public void UpdateCamera()
|
|
{
|
|
Bounds toInclude = player.Room.GetFullBounds();
|
|
cam.transform.position = new Vector3(toInclude.center.x, toInclude.center.y, -10);
|
|
|
|
float roomAspect = toInclude.extents.y / toInclude.extents.x,
|
|
screenAspect = (float)Screen.height / Screen.width;
|
|
|
|
float newSize;
|
|
if (screenAspect >= roomAspect)
|
|
{
|
|
// Clamp X
|
|
newSize = toInclude.extents.x * screenAspect;
|
|
}
|
|
else
|
|
{
|
|
// Clamp Y
|
|
newSize = toInclude.extents.y;
|
|
}
|
|
cam.orthographicSize = Mathf.Max(newSize * (1 + ScreenBuffer), MinSize);
|
|
}
|
|
}
|