using Cinemachine;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
///
///玩家_相机
///
public partial class Player
{
///
/// 震动时间
///
private float shakeTime = 0;
///
/// 震动速度
///
private float lessSpeed = 1;
///
/// 大厅相机
///
public CinemachineVirtualCamera hallCamear;
///
/// 商店相机
///
public CinemachineVirtualCamera shopCamear;
///
/// 游戏相机
///
public CinemachineVirtualCamera gameCamear;
///
/// 胜利相机
///
public CinemachineVirtualCamera winCamear;
///
/// 死亡相机
///
public CinemachineVirtualCamera dieCamear;
///
/// 倒计时相机3
///
public CinemachineVirtualCamera countDown_3;
///
/// 倒计时相机2
///
public CinemachineVirtualCamera countDown_2;
///
/// 倒计时相机1
///
public CinemachineVirtualCamera countDown_1;
///
/// 相机大脑
///
private CinemachineBrain cinemachineBrain;
///
/// 相机效果
///
private CinemachineBasicMultiChannelPerlin noise;
///
/// 得到相机
///
private void GetCamear()
{
cinemachineBrain = GameObject.FindAnyObjectByType();
noise = gameCamear.GetCinemachineComponent();
}
///
/// 初始化
///
private void CamearInit()
{
hallCamear.Priority = 9;
shopCamear.Priority = 9;
gameCamear.Priority = 9;
winCamear.Priority = 9;
dieCamear.Priority = 9;
countDown_3.Priority = 9;
countDown_2.Priority = 9;
countDown_1.Priority = 9;
}
///
/// 转到大厅相机
///
public void TurnToHallCamear()
{
CamearInit();
cinemachineBrain.m_DefaultBlend.m_Time = 1f;
hallCamear.Priority = 10;
SetHallCamear();
}
///
/// 转到商店相机
///
public void TurnToShopCamear(E_CarSizeType e_CarSizeType)
{
CamearInit();
cinemachineBrain.m_DefaultBlend.m_Time = 1f;
shopCamear.Priority = 10;
SetShopCamear(e_CarSizeType);
}
///
/// 转到游戏相机
///
public void TurnToGameCamear()
{
CamearInit();
gameCamear.Priority = 10;
}
///
/// 转到胜利相机
///
public void TurnToWinCamear()
{
CamearInit();
cinemachineBrain.m_DefaultBlend.m_Time = 1f;
switch (e_carSizeType)
{
case E_CarSizeType.Big:
winCamear.m_Lens.FieldOfView = 95;
break;
case E_CarSizeType.little:
winCamear.m_Lens.FieldOfView = 60;
break;
}
winCamear.Priority = 10;
}
///
/// 转到胜利相机
///
public void TurnToDieCamear()
{
CamearInit();
cinemachineBrain.m_DefaultBlend.m_Time = 3f;
dieCamear.Priority = 10;
}
///
/// 设置大厅相机
///
///
public void SetHallCamear()
{
switch (e_carSizeType)
{
case E_CarSizeType.Big:
hallCamear.m_Lens.FieldOfView = 75;
break;
case E_CarSizeType.little:
hallCamear.m_Lens.FieldOfView = 60;
break;
}
}
///
/// 设置游戏相机
///
public void SetGameCamear(bool isSprint)
{
float fieldOfView = gameCamear.m_Lens.FieldOfView;
float value = 0;
if (isSprint)
{
value = 70;
}
else
{
value = 60;
}
DOTween.To(() => fieldOfView, value => fieldOfView = value, value, 1).OnUpdate(() =>
{
gameCamear.m_Lens.FieldOfView = fieldOfView;
});
}
///
/// 设置商店相机
///
public void SetShopCamear(E_CarSizeType e_CarSizeType)
{
float fieldOfView = shopCamear.m_Lens.FieldOfView;
shopCamear.DOKill();
switch (e_CarSizeType)
{
case E_CarSizeType.Big:
DOTween.To(() => fieldOfView, value => fieldOfView = value, 80, 1).OnUpdate(() =>
{
shopCamear.m_Lens.FieldOfView = fieldOfView;
});
break;
case E_CarSizeType.little:
DOTween.To(() => fieldOfView, value => fieldOfView = value, 60, 1).OnUpdate(() =>
{
shopCamear.m_Lens.FieldOfView = fieldOfView;
});
break;
}
}
///
/// 准备
///
public void GetReady(E_CountDownType e_GetReadyType)
{
float startFieldOfVie=0;
float endFieldOfVie=0;
switch (e_carSizeType)
{
case E_CarSizeType.Big:
startFieldOfVie = 100;
endFieldOfVie = 110;
break;
case E_CarSizeType.little:
startFieldOfVie = 60;
endFieldOfVie = 70;
break;
}
CamearInit();
cinemachineBrain.m_DefaultBlend.m_Time = 0f;
CinemachineVirtualCamera cinemachineVirtualCamera=null;
switch (e_GetReadyType)
{
case E_CountDownType.Three:
cinemachineVirtualCamera = countDown_3;
break;
case E_CountDownType.Two:
cinemachineVirtualCamera = countDown_2;
break;
case E_CountDownType.One:
cinemachineVirtualCamera = countDown_1;
break;
}
cinemachineVirtualCamera.Priority = 10;
DOTween.To(() => startFieldOfVie, value => startFieldOfVie = value, endFieldOfVie, 1.2f).OnUpdate(() =>
{
cinemachineVirtualCamera.m_Lens.FieldOfView = startFieldOfVie;
});
}
///
/// 震动参数
///
public void SetShakeValue(float shakeTime, float shakePower = 1, float lessSpeed = 1)
{
noise.m_AmplitudeGain = shakePower;
this.shakeTime = shakeTime;
this.lessSpeed = lessSpeed;
}
///
/// 相机震动
///
private void CamearShake()
{
if (shakeTime > 0)
{
shakeTime -= Time.deltaTime * lessSpeed;
}
else
{
shakeTime = 0;
}
noise.m_FrequencyGain = shakeTime;
}
}