From af8b0dac35971df41b7d8f3632104b61225f8966 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Thu, 11 Jun 2026 18:10:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E7=82=AE=E5=BC=B9=E9=A3=9E=E8=A1=8C?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E5=8F=AF=E8=A7=86=E5=8C=96=20+=20=E5=88=B0?= =?UTF-8?q?=E8=BE=BE=E5=90=8E=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scripts/Managers/SimulationRunner.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/Unity/Assets/Scripts/Managers/SimulationRunner.cs b/src/Unity/Assets/Scripts/Managers/SimulationRunner.cs index 6efeba3..26f1ffa 100644 --- a/src/Unity/Assets/Scripts/Managers/SimulationRunner.cs +++ b/src/Unity/Assets/Scripts/Managers/SimulationRunner.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Text.Json; using CounterDrone.Core; using CounterDrone.Core.Algorithms; @@ -111,6 +112,32 @@ namespace CounterDrone.Unity } } + // 炮弹飞行轨迹 + foreach (var m in _engine.Munitions) + { + if (!_knownMunitions.Contains(m.Id)) + { + var go = GameObject.CreatePrimitive(PrimitiveType.Cylinder); + go.name = m.Id; + go.transform.localScale = new UVector3(2, 10, 2); + _knownMunitions.Add(m.Id); + _entityVisuals[m.Id] = go; + } + if (_entityVisuals.TryGetValue(m.Id, out var mgo)) + mgo.transform.position = new UVector3(m.PosX, m.PosY, m.PosZ); + } + + // 清理已到达的炮弹(已转为云团) + foreach (var id in _knownMunitions.ToArray()) + { + if (!_engine.Munitions.Any(m => m.Id == id) && _entityVisuals.TryGetValue(id, out var go)) + { + Destroy(go); + _knownMunitions.Remove(id); + _entityVisuals.Remove(id); + } + } + if (result.State == SimulationState.Completed) Debug.Log($"Simulation done. Drone: {_engine.Drones[0].Status}, HP: {_engine.Drones[0].Hp:F2}"); }