fix: recommendedTiming按目标点位置算而非中点——每个弹道到达时间不同
- GenerateFireEventsAt: txArrival = distToTx/droneSpeed 替代 threat.ArrivalTime - 航路反方向截断保护 - 暴露毁伤时间 34.4s→38.4s
This commit is contained in:
parent
fe7eb723a1
commit
182af5026d
@ -411,12 +411,23 @@ namespace CounterDrone.Core.Algorithms
|
||||
var mid = ThreatMidpoint(threat);
|
||||
var (effectiveR, expansionTime) = ComputeEffectiveRadius(threat, ammo, env);
|
||||
|
||||
float recommendedTiming = threat.ArrivalTime - expansionTime;
|
||||
if (recommendedTiming < 0.1f) recommendedTiming = 0.1f;
|
||||
|
||||
float tx = mid.X + targetOffset;
|
||||
float tz = mid.Z;
|
||||
|
||||
// 按目标点位置计算无人机到达时间,非中点
|
||||
float droneSpeed = (float)threat.Target.TypicalSpeed / 3.6f;
|
||||
float startX = (float)threat.Waypoints[0].PosX;
|
||||
float startZ = (float)threat.Waypoints[0].PosZ;
|
||||
float endX = (float)threat.Waypoints[^1].PosX;
|
||||
float endZ = (float)threat.Waypoints[^1].PosZ;
|
||||
float totalDist = Kinematics.Distance2D(startX, startZ, endX, endZ);
|
||||
float distToTx = Kinematics.Distance2D(startX, startZ, tx, tz);
|
||||
// 如果目标点在航路反向,截断到 [0, totalDist]
|
||||
distToTx = Math.Max(0, Math.Min(totalDist, distToTx));
|
||||
float txArrival = totalDist > 0.1f ? distToTx / Math.Max(0.1f, droneSpeed) : 0;
|
||||
float recommendedTiming = txArrival - expansionTime;
|
||||
if (recommendedTiming < 0.1f) recommendedTiming = 0.1f;
|
||||
|
||||
float fireTime;
|
||||
if (unit.Type == PlatformType.AirBased)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user