Files
MMI2-Project/MMI2-project/Assets/HeneGames/Simple Airplane Controller/Scripts/SimpleAirplaneCamera.cs
2026-05-30 18:11:47 +02:00

77 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
using static HeneGames.Airplane.SimpleAirPlaneController;
namespace HeneGames.Airplane
{
public class SimpleAirplaneCamera : MonoBehaviour
{
private CinemachineBrain brain;
[Header("References")]
[SerializeField] private SimpleAirPlaneController airPlaneController;
[SerializeField] private CinemachineFreeLook freeLook;
[Header("Camera values")]
[SerializeField] private float cameraDefaultFov = 60f;
[SerializeField] private float cameraTurboFov = 40f;
private void OnEnable()
{
airPlaneController.crashAction += Crash;
}
private void OnDisable()
{
airPlaneController.crashAction -= Crash;
}
private void Start()
{
brain = GetComponent<CinemachineBrain>();
//Lock and hide mouse
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
private void Update()
{
CameraFovUpdate();
}
private void CameraFovUpdate()
{
//Turbo
if(!airPlaneController.PlaneIsDead() && airPlaneController.airplaneState == AirplaneState.Flying)
{
if (SimpleAirplaneInput.Turbo && !airPlaneController.TurboOverheating())
{
ChangeCameraFov(cameraTurboFov);
}
else
{
ChangeCameraFov(cameraDefaultFov);
}
}
else
{
ChangeCameraFov(cameraDefaultFov);
}
}
public void ChangeCameraFov(float _fov)
{
float _deltatime = Time.deltaTime * 100f;
freeLook.m_Lens.FieldOfView = Mathf.Lerp(freeLook.m_Lens.FieldOfView, _fov, 0.05f * _deltatime);
}
private void Crash()
{
//Change update method after crash
brain.m_BlendUpdateMethod = CinemachineBrain.BrainUpdateMethod.FixedUpdate;
}
}
}