中间版本提交
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user