This commit is contained in:
2026-09-08 21:52:22 +08:00
parent cc0c52bbd1
commit dc0afd82dd
139 changed files with 3359 additions and 4560 deletions
@@ -440,6 +440,13 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
var zsDelay = currentZhanShenData as ZhanShenTurretData;
_laserPrepWait = zsDelay != null ? zsDelay.laserFXDelay : 0f;
// ⭐ 锁定建立:刷新 FireIndex=1 → Fire0→Fire1 过渡生效,激光动画的 SMB 事件负责开门
currentZhanShenData?.RefreshWarGodFireMode();
}
else if (!lockActive && _laserLockActive)
{
// ⭐ 锁定丢失:刷新 FireIndex=0 → 退回 Fire0 子弹动画(过渡条件 FireIndex==0)
currentZhanShenData?.RefreshWarGodFireMode();
}
_laserLockActive = lockActive;
@@ -492,6 +492,22 @@ public class TurretData : MonoBehaviour
&& sit.monCotl_Lock_Position.gameObject.activeInHierarchy;
}
/// <summary>
/// 锁定状态变化瞬间刷新 FireIndex(0=子弹 Fire0 / 1=激光 Fire1):
/// ChangeState 同状态早退不会重跑 PlayWarGodAnimator,边开火边锁定时 FireIndex 会停在旧值,
/// 动画不切 Fire1、SMB 事件永不触发,特效只能等 laserFXDelay 兜底定时器“直接激活”。
/// 锁定建立/丢失时调用本方法刷新参数 → Fire0↔Fire1 过渡(FireIndex 条件)立即生效,
/// 特效显示由此完全交给 Fire1 上的 ZhanShenLaserLoopSMB 动画事件开门。
/// </summary>
public void RefreshWarGodFireMode()
{
if (!_warGodAnimMode || !_hasFireIndex) return;
if (currState != TurretState.Attack
&& currState != TurretState.LaserStart
&& currState != TurretState.LaserLoop) return;
SetNumericParam(fireIndexParam, _fireIndexType, IsLaserActive() ? 1 : 0);
}
/// <summary>
/// 战神激光 loop 动画开始通知(ZhanShenLaserLoopSMB 状态机行为 / 剪辑动画事件殊途同归):
/// 通知座位立即显示激光及全部特效(提前结束 laserFXDelay 等待)。