77 lines
2.1 KiB
C#
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;
|
|
}
|
|
}
|
|
} |