OvertakingLegend/Assets/Script/Player/Player_Camera.cs

285 lines
7.2 KiB
C#
Raw Permalink Normal View History

2025-03-24 03:08:22 +00:00
using Cinemachine;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
/// <summary>
///<2F><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD>
/// </summary>
public partial class Player
{
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
/// </summary>
private float shakeTime = 0;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
/// </summary>
private float lessSpeed = 1;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public CinemachineVirtualCamera hallCamear;
/// <summary>
/// <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public CinemachineVirtualCamera shopCamear;
/// <summary>
/// <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
/// </summary>
public CinemachineVirtualCamera gameCamear;
/// <summary>
/// ʤ<><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public CinemachineVirtualCamera winCamear;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public CinemachineVirtualCamera dieCamear;
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>3
/// </summary>
public CinemachineVirtualCamera countDown_3;
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>2
/// </summary>
public CinemachineVirtualCamera countDown_2;
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>1
/// </summary>
public CinemachineVirtualCamera countDown_1;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
private CinemachineBrain cinemachineBrain;
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
/// </summary>
private CinemachineBasicMultiChannelPerlin noise;
/// <summary>
/// <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
private void GetCamear()
{
cinemachineBrain = GameObject.FindAnyObjectByType<CinemachineBrain>();
noise = gameCamear.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
}
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>
/// </summary>
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;
}
/// <summary>
/// ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public void TurnToHallCamear()
{
CamearInit();
cinemachineBrain.m_DefaultBlend.m_Time = 1f;
hallCamear.Priority = 10;
SetHallCamear();
}
/// <summary>
/// ת<><D7AA><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public void TurnToShopCamear(E_CarSizeType e_CarSizeType)
{
CamearInit();
cinemachineBrain.m_DefaultBlend.m_Time = 1f;
shopCamear.Priority = 10;
SetShopCamear(e_CarSizeType);
}
/// <summary>
/// ת<><D7AA><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
/// </summary>
public void TurnToGameCamear()
{
CamearInit();
gameCamear.Priority = 10;
}
/// <summary>
/// ת<><D7AA>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
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;
}
/// <summary>
/// ת<><D7AA>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public void TurnToDieCamear()
{
CamearInit();
cinemachineBrain.m_DefaultBlend.m_Time = 3f;
dieCamear.Priority = 10;
}
/// <summary>
/// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="e_CarSizeType"></param>
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;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
/// </summary>
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;
});
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
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;
}
}
/// <summary>
/// ׼<><D7BC>
/// </summary>
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;
});
}
/// <summary>
/// <20>𶯲<EFBFBD><F0B6AFB2><EFBFBD>
/// </summary>
public void SetShakeValue(float shakeTime, float shakePower = 1, float lessSpeed = 1)
{
noise.m_AmplitudeGain = shakePower;
this.shakeTime = shakeTime;
this.lessSpeed = lessSpeed;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
private void CamearShake()
{
if (shakeTime > 0)
{
shakeTime -= Time.deltaTime * lessSpeed;
}
else
{
shakeTime = 0;
}
noise.m_FrequencyGain = shakeTime;
}
}