音频接入
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user