public override void UpdateVisuals() { float sumSpectrum = VisualizerCore.Level(); // Build a logarithmic spectrum float[] scaledSpectrum = new float[FLAMES]; float b = Mathf.Pow(VisualizerCore.SpectrumSize, 1f / FLAMES); float bPow = 1; for (int i = 0; i < FLAMES; i++) { float prevBPow = bPow; bPow *= b; for (int j = (int)prevBPow; j < bPow - 1; j++) { scaledSpectrum[i] += VisualizerCore.Spectrum(j); } } // Update for (int i = 0; i < FLAMES; i++) { float nextPower = 0.2f + scaledSpectrum[i] * 6 + sumSpectrum * 0.5f; _powers[i] = Mathf.Max(_powers[i] * (1 - 10 * Time.deltaTime), nextPower); _flames[i].SetFloat("Power", _powers[i]); } }
// Called every frame public override void UpdateVisuals() { // Set up speeds float sum = Mathf.Clamp01(VisualizerCore.Level()) * 0.2f; float audioSpeed = Speed * Time.deltaTime * (sum + 0.01f) * Mathf.Sign(KillX); float thisSpeed = Mathf.Lerp(_lastSpeed, audioSpeed, AudioStrength); _lastSpeed = thisSpeed; // Set up spawns _spawnCooldown += CountPerSec * Time.deltaTime * Mathf.Abs(thisSpeed) * 20; for (; _spawnCooldown > 1; _spawnCooldown--) MaybeSpawnParticle(-KillX); // Apply speeds foreach (GameObject particle in _particles.ToList()) { // Calculate and apply speeds Vector3 position = particle.transform.position; float thisParticleXSpeedModifier = Mathf.Sin((position.y + _spawnCooldown) * 3); float thisParticleXSpeed = thisSpeed * (0.9f + 0.1f * thisParticleXSpeedModifier); float thisParticleYSpeed = Random.Range(-0.05f, 0.05f) * thisParticleXSpeed; position += new Vector3(thisParticleXSpeed, thisParticleYSpeed); particle.transform.position = position; // Apply scale //particle.transform.localScale = new Vector3(Size, Size, 1); // Kill if too far if (Mathf.Abs(particle.transform.position.x) > Mathf.Abs(KillX)) { _particles.Remove(particle); Destroy(particle); } } }
public override void UpdateVisuals() { // Set up speeds float sum = VisualizerCore.Level(); if (sum > _maxSum) { _maxSum = sum; } float audioSpeed = Speed * Time.deltaTime * (sum + 0.01f); _totalTime += audioSpeed; _totalTime %= 2; _animator.SetFloat(AnimationTime, Mathf.PingPong(_totalTime, 1)); //_anim.SetFloat("Time", 1f - sum / _maxSum); _light.intensity = Mathf.Max(sum * Brightness, _light.intensity * 0.95f); }