今回の目標は次のように空間内に線分を描くことです。
前回、次の絵のように1本だけ描くことには成功しています。
そのときのコードは次の通りでした(なお、点を追加すれば折れ線は簡単に描けます)。
var renderer = gameObject.AddComponent<LineRenderer>(); var pos = new Vector3[]{ new Vector3(1f, 0f, 20f), new Vector3(10f, 10f, 10f), }; renderer.startWidth = 1f;//線分の太さ renderer.endWidth = 1f; renderer.positionCount = pos.Length;//与えた点の数 renderer.SetPositions(pos);
しかし、最初の絵のように線分を2本描こうとして単純に上のコードをもう1回繰り返して書いて実行してもうまくいきません。(うまくいかないことを)試してみてください。
ネットをあちこち調べていろいろ実験をして結局、次のようにしたらうまくいきました。
//1本目 GameObject g = new GameObject(); var rd = g.AddComponent<LineRenderer>(); var pos = new Vector3[]{ new Vector3(1f, 0f, 20f), new Vector3(10f, 10f, 10f), }; rd.startWidth = 1f;//線分の太さ rd.endWidth = 1f; rd.positionCount = pos.Length;//与えた点の数 rd.SetPositions(pos); //2本目 GameObject go = new GameObject(); var rd1 = go.AddComponent<LineRenderer>(); var pos1 = new Vector3[]{ new Vector3(-5f, 0f, 20f), new Vector3(-10f, 10f, 10f), }; rd1.startWidth = 1f;//線分の太さ rd1.endWidth = 1f; rd1.positionCount = pos1.Length;//与えた点の数 rd1.SetPositions(pos1); }
注意して読んでください。2回とも GemeObject を取得し、そこへ LineRenderer コンポーネントを追加し、それを用いて描画しているのです。gameObject.AddComponent
を複数回実行するとその時点でエラーが出るようです。なので、これは使わずにやってみました。
実際にはもちろん描画用の関数を作るなど、各自で楽をできるようにしてください。これで空間内で自由に線分(折れ線)を描けます! こうすればうまくいくと分かるまでに相当時間を使いましたが、使い方が分からない人もこのサイトを見れば一発です。
追記:
第3回の記事も必ずご覧ください。重要な注意を書きました!
www.omoshiro-suugaku.com