diff --git a/Assets/Scripts/FixSystem/Scope/OscilloscopeController.cs b/Assets/Scripts/FixSystem/Scope/OscilloscopeController.cs index e3ecbce8f..759e445bb 100644 --- a/Assets/Scripts/FixSystem/Scope/OscilloscopeController.cs +++ b/Assets/Scripts/FixSystem/Scope/OscilloscopeController.cs @@ -9,9 +9,11 @@ public class OscilloscopeController : MonoBehaviour public WaveformVisualizer waveformVisualizer; + //public WaveformVisualizer errorWaveformVisualizer; // 错误波形 + public SliderCircular phaseSlider; // 控制相位偏移的旋钮 - private float phaseShiftMax = Mathf.PI * 4f; // 最大相位偏移量 + private float phaseShiftMax = Mathf.PI * 3f; // 最大相位偏移量 private Transform closestTarget; // 最近的目标点 private float clarity; // 清晰度(根据距离计算) @@ -36,12 +38,13 @@ public class OscilloscopeController : MonoBehaviour float phaseShift = 0f; if (phaseSlider != null) { - phaseShift = (phaseSlider.Value / phaseSlider.MaxValue) * phaseShiftMax; // 计算相位偏移量 + float sliderPhase = (phaseSlider.Value / 10f) * phaseShiftMax; + phaseShift = sliderPhase + targetData.initialRandomPhase; // 加上随机初始相位 } if (phaseShift > 1) { - waveformVisualizer.SetPhaseShift(phaseShift + targetData.randomShift * Mathf.PI); + waveformVisualizer.SetPhaseShift(phaseShift); } else { diff --git a/Assets/Scripts/FixSystem/Scope/TargetPointData.cs b/Assets/Scripts/FixSystem/Scope/TargetPointData.cs index ad6b8186f..93a0d06a7 100644 --- a/Assets/Scripts/FixSystem/Scope/TargetPointData.cs +++ b/Assets/Scripts/FixSystem/Scope/TargetPointData.cs @@ -7,9 +7,12 @@ public class TargetPointData : MonoBehaviour public WaveformType errorWaveformType = WaveformType.Spike; // 错误波形类型(如果有错误) [HideInInspector] public int randomShift; + [HideInInspector] + public float initialRandomPhase; // 随机初始相位 void Start() { - randomShift=Random.Range(2, 6); + randomShift = Random.Range(4, 8); + initialRandomPhase = randomShift*Mathf.PI * 3f*0.1f; // 随机初始相位 } } \ No newline at end of file diff --git a/Assets/Scripts/FixSystem/Scope/WaveformVisualizer.cs b/Assets/Scripts/FixSystem/Scope/WaveformVisualizer.cs index 437507361..4536da73e 100644 --- a/Assets/Scripts/FixSystem/Scope/WaveformVisualizer.cs +++ b/Assets/Scripts/FixSystem/Scope/WaveformVisualizer.cs @@ -10,6 +10,7 @@ public enum WaveformType Composite, Spike, Pulse, + Error // 新增错误波形类型 } [RequireComponent(typeof(LineRenderer))] @@ -34,7 +35,8 @@ public class WaveformVisualizer : MonoBehaviour private float spriteWidth; private float spriteHeight; - private float[] waveformData; + [HideInInspector] + public float[] waveformData; private float[] noiseData; private float[] displayData; private float[] antiWaveformData; @@ -45,9 +47,9 @@ public class WaveformVisualizer : MonoBehaviour public float amplitudeModulationFrequency = 0.5f; public float amplitudeModulationDepth = 0.5f; - public float phaseShift = 0f; // 相位偏移 + public float phaseShift = 0f; - private bool isCaptured = false; // 是否已拍照(冻结波形) + private bool isCaptured = false; void Start() { @@ -73,7 +75,7 @@ public class WaveformVisualizer : MonoBehaviour displayData = new float[samples]; antiWaveformData = new float[samples]; - DrawWaveform(); // 初始化波形 + DrawWaveform(); } void Update() @@ -152,6 +154,9 @@ public class WaveformVisualizer : MonoBehaviour case WaveformType.Spike: value = Random.Range(0f, 1f) > 0.98f ? Random.Range(0.5f, 1f) : 0f; break; + case WaveformType.Error: // 错误波形逻辑 + value = Random.Range(0f, 1f) > 0.95f ? Random.Range(-1f, 1f) : 0f; + break; default: value = 0f; break; @@ -168,6 +173,7 @@ public class WaveformVisualizer : MonoBehaviour antiWaveformData[i] = GetWaveformValue(t, phaseShift) * clarity; } } + void DrawWaveform() { for (int i = 0; i < samples; i++) @@ -179,6 +185,7 @@ public class WaveformVisualizer : MonoBehaviour Vector3 position = new Vector3(x, y, 0); lineRenderer.SetPosition(i, position); } + Color waveColor = Color.Lerp(noiseColor, clearColor, clarity); lineRenderer.startColor = waveColor; @@ -189,17 +196,16 @@ public class WaveformVisualizer : MonoBehaviour lineRenderer.endWidth = startWidth; } - // 拍照功能 public void SetCaptured(bool captured) { isCaptured = captured; } - // 应用相位偏移 + public void SetPhaseShift(float phaseShiftValue) { phaseShift = phaseShiftValue; } - // 重置波形 + public void ResetWaveform() { isCaptured = false;