コード例 #1
0
        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]);
            }
        }
コード例 #2
0
        // 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);
                }
            }
        }
コード例 #3
0
        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);
        }