// Update is called once per frame void Update() { //if (newFrequency != frequency || amplitude != newAmplitude) //{ // if(newFrequency != frequency) // { // CalcNewFrequency(); // } // amplitude = newAmplitude; //} CalcNewFrequency(); amplitude = newAmplitude; time += Time.deltaTime; SineWaveData data = new SineWaveData() { amplitude = amplitude, frequency = frequency, phaseShift = phaseShift, time = time }; OnSineWaveChange(data); var newPosition = amplitude * Mathf.Sin(frequency * time + phaseShift); player.transform.position = new Vector3(0, newPosition, 0); }
private void Awake() { waveMF = GetComponent <MeshFilter>(); waveMR = GetComponent <MeshRenderer>(); waveMC = GetComponent <MeshCollider>(); waveMC.convex = true; waveMesh = waveMF.mesh; _sineWaveData = new SineWaveData(_amplitude, _frequency, _amplOffset, _elapsedTime, _noise); }
public void GeneratePoints(SineWaveData data) { points.Clear(); float step = length / numberOfPoints; for (int i = -5; i < numberOfPoints; ++i) { points.Add(new Vector3(i * step, Mathf.Sin(i * step * data.frequency + data.phaseShift + data.time * data.frequency) * data.amplitude, 0)); } }
// Start is called before the first frame update void Start() { PlayerMovement.OnSineWaveChange += OnSineWaveChange; lineRenderer = GetComponent <LineRenderer>(); lineRenderer.material = new Material(Shader.Find("Sprites/Default")); lineRenderer.startColor = sineColor; lineRenderer.endColor = sineColor; lineRenderer.startWidth = waveWidth; lineRenderer.endWidth = waveWidth; var data = new SineWaveData() { amplitude = 4, frequency = 2, phaseShift = 0 }; GeneratePoints(data); lineRenderer.SetPositions(points.ToArray()); }
private void OnSineWaveChange(SineWaveData data) { GeneratePoints(data); }