🙆♀️
LineRendererでsin波書く
なんか無性にLineRendererで遊びたくなったので、sin波を書いてみた.
コード
public class LineMusic : MonoBehaviour
{
[SerializeField] private LineRenderer lineRenderer;
[SerializeField] private float cycle = 1f;
private float previousCycle = 0f;
private void Update()
{
if (Math.Abs(previousCycle - cycle) > float.Epsilon)
{
Render(CreateSin(256, 10f, -5f, cycle));
previousCycle = cycle;
}
}
private Vector3[] CreateSin(int size, float xLength, float xOffset, float cycle)
{
var points = new Vector3[size];
for (var i = 0; i < points.Length; i++)
{
var v = Mathf.Sin((float) i / size * 2 * Mathf.PI * cycle);
points[i] = new Vector3((float) i / size * xLength + xOffset, v, 0);
}
return points;
}
public void Render(Vector3[] points)
{
lineRenderer.positionCount = points.Length;
lineRenderer.SetPositions(points);
}
}
結果
オシロスコープ感ある.
次空き時間できたら、音声ファイルデコードしてかっこよくLineRendererでビジュアライズとかしてみたいなと思った
Discussion