simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

Unity:楽曲のビートに合わせてオブジェクトを振動させる

ちょっとテンションが上がるBGMをかけながら作業していたところ
ふと、Audio の低音と同期して振動するオブジェクトができないかな?
なんて思いついたので、ちょっと調べて解決したので、解決方法を書いておきます。

情報ソースはこちら
docs.unity3d.com

using UnityEngine;

public class WaveOutputter : MonoBehaviour
{
    float[] _spectrum = new float[256];
    float _lastLow = 0;

    [Range(0, 1)]
    public float t = 1;

    void Start()
    {
    }

    void Update()
    {
        AudioListener.GetSpectrumData(_spectrum, 0, FFTWindow.Rectangular);
        float low = 0;
        for (int i = 1; i < 3; i++)
            low += _spectrum[i];

        low = _lastLow * (1 - t) + low * t;
        transform.localScale = Vector3.one * 0.05f * low + Vector3.one;
        _lastLow = low;
    }
}