音频接入

This commit is contained in:
2024-12-30 23:31:37 +08:00
parent 61892bafbd
commit 37c4934ad3
14 changed files with 847 additions and 1531 deletions
+18 -34
View File
@@ -1,5 +1,4 @@
using System;
using System.Collections;
using System.Linq;
using AibisDream.FixSystem;
using AibisDream.Framework;
@@ -23,11 +22,12 @@ namespace AibisDream
[FormerlySerializedAs("盖板移动时间")] [SerializeField]
private float coverMoveDuration = 5f;
[FormerlySerializedAs("盖板移动距离")] [SerializeField]
private float coverMoveDistance = 2.8f;
private bool IsValid => engineData.isValid.Value;
public event Action<EngineData> UpdateDashboard;
private void Awake()
@@ -40,14 +40,14 @@ namespace AibisDream
private void Start()
{
OnLoad();
gameObject.SetActive(false);
}
private void OnLoad()
{
engineData = new EngineData(config.invalidTime);
// 初始档位置为2
_airGate.MoveToLevel(2);
DialogController.Instance?.SetVariable("$curAirLevel", 2);
@@ -105,26 +105,19 @@ namespace AibisDream
/// <returns>动画序列</returns>
public Tween OpenCover()
{
AudioManager.PlayLoop2Audio("amb_shitou_engine");
var sq = DOTween.Sequence();
// 盖板上移
var moveDis = new Vector3(0, coverMoveDistance, 0);
sq.Join(_cover.transform.DOBlendableMoveBy(moveDis, coverMoveDuration));
// 盖板淡出
sq.Join(_cover.DOFade(0, coverMoveDuration));
// 为引擎系统解锁
sq.OnComplete(Unlock);
return sq;
}
public IEnumerator OpenCoverAsync()
{
var sq = OpenCover();
if (sq.active && !sq.IsComplete())
{
yield return null;
}
return sq;
}
/// <summary>
@@ -133,31 +126,22 @@ namespace AibisDream
/// <returns>动画序列</returns>
public Tween CloseCover()
{
AudioManager.PauseLoop2Audio();
var sq = DOTween.Sequence();
sq.Join(_cover.DOFade(1, coverMoveDuration));
var moveDis = new Vector3(0, -coverMoveDistance, 0);
sq.Join(_cover.transform.DOBlendableMoveBy(moveDis, coverMoveDuration));
// 锁定引擎系统
sq.OnComplete(Lock);
return sq;
}
public IEnumerator CloseCoverAsync()
{
var sq = CloseCover();
if (sq.active && !sq.IsComplete())
{
yield return null;
}
return sq;
}
public void Lock()
{
// 禁止油门和气门
}
public void Unlock()
@@ -235,7 +219,7 @@ namespace AibisDream
public struct EngineData
{
private const float SuccessDuration = 1.5f;
public float curSpeed;
public float curOil;
public float curAir;
@@ -285,16 +269,16 @@ namespace AibisDream
curAir = curOil;
// 如果离开范围且当前在系统有效期,就进入一段失效期
var curInAirRange = curAir <= curAirMax && curAir >= curAirMin;
if (inAirRange && !curInAirRange && !isSuccess)
{
// 出界的话
if (curAir > curAirMax) DialogController.Instance?.StartDialogNode("引擎过速");
if (curAir < curAirMin) DialogController.Instance?.StartDialogNode("引擎掉速");
isValid.Value = false;
}
inAirRange = curInAirRange;
}
@@ -316,7 +300,7 @@ namespace AibisDream
{
// 已经成功就不用校验了
if (isSuccess) return false;
if (curSpeed >= targetSpeed)
{
reachTargetTime += Time.deltaTime;
@@ -328,7 +312,7 @@ namespace AibisDream
// 如果速度达标时间足够就判断成功
if (!(reachTargetTime >= SuccessDuration)) return false;
isSuccess = true;
return true;
}