コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】LineRenderer で円を描画する例

ソースコード

using UnityEngine;

public sealed class CircleLineRenderer : MonoBehaviour
{
    [SerializeField] private LineRenderer m_lineRenderer; // 円を描画するための LineRenderer
    [SerializeField] private float        m_radius;       // 円の半径
    [SerializeField] private float        m_lineWidth;    // 円の線の太さ

    private void Reset()
    {
        m_lineRenderer = GetComponent<LineRenderer>();
    }

    private void Awake()
    {
        InitLineRenderer();
    }

    private void InitLineRenderer()
    {
        var segments = 360;

        m_lineRenderer.startWidth    = m_lineWidth;
        m_lineRenderer.endWidth      = m_lineWidth;
        m_lineRenderer.positionCount = segments;
        m_lineRenderer.loop          = true;
        m_lineRenderer.useWorldSpace = false; // transform.localScale を適用するため

        var points = new Vector3[ segments ];

        for ( var i = 0; i < segments; i++ )
        {
            var rad = Mathf.Deg2Rad * ( i * 360f / segments );
            var x   = Mathf.Sin( rad ) * m_radius;
            var y   = Mathf.Cos( rad ) * m_radius;
            points[ i ] = new Vector3( x, y, 0 );
        }

        m_lineRenderer.SetPositions( points );
    }
}

関連記事