Run-and-capture/Assets/CameraSizeController.cs

53 lines
1.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
using System;
public class CameraSizeController : MonoBehaviour
{
public float maxSize = 7.5f, camExpandSmoothness = 0.01f;
public TileOwner trackingPlayer = TileOwner.Ariost;
private float _startSize;
[SerializeField] private CinemachineVirtualCamera _cam;
private void Awake()
{
//TileManagment.OnAnyTileCaptured += UpdateCamSize;
_startSize = _cam.m_Lens.OrthographicSize;
}
private void FixedUpdate()
{
UpdateCamSize();
}
private void UpdateCamSize(PlayerState player)
{
if (player.ownerIndex != trackingPlayer)
{
return;
}
int maxTilesNumber = TileManagment.levelTiles.Count;
int playerTilesNumber = TileManagment.charTiles[(int)player.ownerIndex].Count;
float camSizeDelta = maxSize - _startSize;
_cam.m_Lens.OrthographicSize = _startSize + (float)playerTilesNumber / maxTilesNumber * camSizeDelta;
}
private void UpdateCamSize()
{
int maxTilesNumber = TileManagment.levelTiles.Count;
int playerTilesNumber = TileManagment.charTiles[(int)trackingPlayer].Count;
float camSizeDelta = maxSize - _startSize;
float targetSize = _startSize + (float)playerTilesNumber / maxTilesNumber * camSizeDelta;
_cam.m_Lens.OrthographicSize = Mathf.Lerp(_cam.m_Lens.OrthographicSize, targetSize, camExpandSmoothness);
}
}