中间版本提交

This commit is contained in:
2024-10-10 13:32:58 +08:00
parent d037457701
commit c23683cc6f
3 changed files with 23 additions and 11 deletions
@@ -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
{
@@ -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; // 随机初始相位
}
}
@@ -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;