LineRendererでGameObjectの周りを線を囲いたい
やりたいこと
① 複数のマーカー(GameObject)の間を線で囲いたい
② マーカーが増えたときも、それに合わせて線で囲ってほしい
環境
名前 | バージョン |
---|---|
macOS Sieera | 10.12.6 |
Unity | 2017.1.0f3 Personal |
線を引く
Unityで線を引く方法はいくつかあるが*1、今回はこの中で扱いが楽そうなLineRendererを使うことにした。
LineRendererは LineRenderer.numPositions
頂点の数を設定し、LineRenderer.SetPosition(int,Vecter3)
描画したい頂点の順番と座標を引数に線を描画することができる。
動的に線を描画
コードはこんな感じ。
foreachでリストを回してるだけ。
見た目はこんな感じ(デモ用に markerList
の中に3つcubeを入れてある)。
悩んだのは頂点の数を変える際、 LineRenderer.numPositions
で設定する頂点の数はconstになると思ってたら、普通に変えることができた。
markerList
にGameObjectを追加しても描画してくれるし、GameObjectの座標を変えても線が追従してくれる様になった。
線を囲う
とりあえずマーカー同士を線で結ぶことはできたけど、囲うことはできてない。
なので、Inspectorをいじると、
いい感じになった。
雑記
ブログを書く前は、LineRendererのinspectorにroopの設定があることを知らずに、線を囲うために下のコードで無理やりやっていた。
ブログを書くためにLineRendererについて再度調べてるうちに、roopを見つけてこれでいいじゃん…ってなった。
Read other posts