うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】LineRenderer の Width について

LineRenderer の Width は widthCurve という変数で AnimationCurve になっている

f:id:hacchi_man:20210119003320p:plain:w300

これは Positions の 開始位置から、終了位置までのその点での位置で
AnimationCurve.Evaluate して Width を計算していると思われる

そのため、Positions の数が AnimationCurve の Key より少なかった場合
想定と違う Width になる可能性があるので注意が必要になる

f:id:hacchi_man:20210119005133p:plain:w300

また、startWidthendWidth でも変えることができるが

これはすでにある AnimationCurve を書き換えてしまうので注意が必要

_lineRenderer.startWidth = 0.1f;
_lineRenderer.endWidth = 0.1f;

ランタイムでの変更

widthCurve を利用してランタイムで値を変更する場合

for (var i = 0; i < _lineRenderer.widthCurve.length; i++)
{
    _lineRenderer.widthCurve.keys[i].value = i;
}

のように Key に対して値を入れても変化しない

そのため、AnimationCurveインスタンスを新しく作成する必要がある

var curve = new AnimationCurve();
for (var i = 0; i < _lineRenderer.widthCurve.length; i++)
{
    curve.AddKey(i, i);
}
 
_lineRenderer.widthCurve = curve;