1
This commit is contained in:
@@ -141,6 +141,10 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
private readonly List<GameObject> _laserStartFx = new List<GameObject>();
|
||||
/// <summary>激光命中特效实例(与 _laserFx 一一对应,世界空间 Z=-50 层,跟随锁定目标)</summary>
|
||||
private readonly List<GameObject> _laserHitFx = new List<GameObject>();
|
||||
/// <summary>激光准备等待剩余秒数:锁定刚建立时读 ZhanShenTurretData.laserFXDelay,>0 期间激光及特效隐藏(等准备动画播完)</summary>
|
||||
private float _laserPrepWait;
|
||||
/// <summary>上一帧是否有锁定点(检测锁定建立沿,触发准备等待)</summary>
|
||||
private bool _laserLockActive;
|
||||
/// <summary>预制体形态激光的基准缩放(重建时取自 laserPrefab.transform.localScale)</summary>
|
||||
private Vector3 _laserFxBaseScale = Vector3.one;
|
||||
/// <summary>预制体形态激光的角度偏移:激光预制体自带的 Z 轴旋转(重建时缓存,绕世界 Z 叠加在计算朝向上)</summary>
|
||||
@@ -429,17 +433,33 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
}
|
||||
}
|
||||
|
||||
// ⭐ 准备动画等待:锁定刚建立时读 ZhanShenTurretData.laserFXDelay,等待期间激光及全部特效
|
||||
// (光束/起点球/起点特效/命中特效)先不显示,等战神摆姿势动画播完再出现;锁定丢失后重新锁定会重新等待
|
||||
bool lockActive = _laserTargets.Count > 0;
|
||||
if (lockActive && !_laserLockActive)
|
||||
{
|
||||
var zsDelay = currentZhanShenData as ZhanShenTurretData;
|
||||
_laserPrepWait = zsDelay != null ? zsDelay.laserFXDelay : 0f;
|
||||
}
|
||||
_laserLockActive = lockActive;
|
||||
|
||||
if (_laserPrepWait > 0f)
|
||||
{
|
||||
_laserPrepWait -= Time.deltaTime;
|
||||
lockActive = false; // 等待期间当作未锁定:激光和特效全部隐藏
|
||||
}
|
||||
|
||||
// ⭐ 散射激光使用中就激活左右起点父对象显示起点球:
|
||||
// isScatterLaserOn=三发+锁定开着(面板每帧刷新,本地座位);锁定点>1=三发目标已凑满(远程/bot座位)
|
||||
// 两个条件满足其一即激活——散射模式开着但目标不足时也要显示起点球
|
||||
UpdateJGFXParentsActive(currentZhanShenData != null && (_laserTargets.Count > 1 || isScatterLaserOn));
|
||||
UpdateJGFXParentsActive(lockActive && (_laserTargets.Count > 1 || isScatterLaserOn));
|
||||
|
||||
#if UNITY_EDITOR
|
||||
DebugJGFXState();
|
||||
#endif
|
||||
|
||||
// 没有锁定点:隐藏所有激光
|
||||
if (_laserTargets.Count == 0)
|
||||
// 没有锁定点(或准备动画等待中):隐藏所有激光
|
||||
if (!lockActive)
|
||||
{
|
||||
HideZhanShenLasers();
|
||||
return;
|
||||
@@ -452,6 +472,15 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
UpdateZhanShenLaserLine();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 战神 loop 动画开始通知(TurretData 转发:ZhanShenLaserLoopSMB 状态机行为 / 剪辑动画事件):
|
||||
/// 立即放行激光及全部特效显示(提前结束 laserFXDelay 等待;未在等待中则无副作用)。
|
||||
/// </summary>
|
||||
public void NotifyZhanShenLaserLoopAnim()
|
||||
{
|
||||
_laserPrepWait = 0f;
|
||||
}
|
||||
|
||||
/// <summary>隐藏全部战神激光(两种形态都处理)</summary>
|
||||
private void HideZhanShenLasers()
|
||||
{
|
||||
@@ -613,6 +642,10 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
|
||||
// 起点/命中特效一并销毁
|
||||
ClearZhanShenLaserPointFx();
|
||||
|
||||
// 准备动画等待状态复位(下次锁定重新计时)
|
||||
_laserPrepWait = 0f;
|
||||
_laserLockActive = false;
|
||||
}
|
||||
|
||||
// ==================== 激光起点/命中特效(三发+锁定) ====================
|
||||
|
||||
Reference in New Issue
Block a user