[UNITY]2DRPG開発日誌 #68 LineRendererで円弧を描画する

UNITY

オブジェクトと「位置」「直径」「線の太さ」を同期する円弧を描画します。

2Dsprite(Square)にこんなスクリプトを貼り付けます。

    LineRenderer lineRenderer;
    [SerializeField] int circleRange = 380;

    private void Start()
    {
        lineRenderer = this.gameObject.AddComponent<LineRenderer>();
    }

    private void Update()
    {
        this.transform.localScale = new Vector2(this.transform.localScale.x, this.transform.localScale.x);

        float radius = this.transform.localScale.x * 1.5f;
        float lineWidth = radius * 0.1f;
        float posX = this.transform.position.x;
        float posY = this.transform.position.y;

        lineRenderer.startWidth = lineWidth;
        lineRenderer.endWidth = lineWidth;
        lineRenderer.positionCount = circleRange;

        var points = new Vector3[circleRange];

        for (int i = 0; i < circleRange; i++)
        {
            var rad = Mathf.Deg2Rad * (i * circleRange / circleRange);
            var x = posX + Mathf.Sin(rad) * radius;
            var y = posY + Mathf.Cos(rad) * radius;
            points[i] = new Vector3(x, y, 0);
        }

        lineRenderer.SetPositions(points);
    }

すると、

こんな風に描画されます。

場所、大きさもきちんと同期されています。円が小さくなると線も細くなっています。

circleRangeの値を小さくすると、弧が短くなります。

UNITY
スポンサーリンク
Follow Us
KITTYPOOL
タイトルとURLをコピーしました