< Unity >LineRendererについて

Unity バージョン : 5.3.2


まず、Unityには線を描く機能が2つほどあります。

一つがオブジェクトの移動軌跡を描くTrailRenderer。

もう一つが今回のお話のLineRenderer。

後者のLineRendererは軌跡ではなく任意の座標を指定し線を描くものになります。

▼始点が(0.0f,0.0f,0.0f) 終点が(3.0f,3.0f,0.0f)
f:id:MTIMSNO:20160608222152j:plain

上の画像は、始点・終点の2点でしたが
これを3点にすると…

f:id:MTIMSNO:20160608222249j:plain

このような感じで始点から2点目にかけてが細くなってしまいます。
ゲームを作っている際にこの仕様?に出会ってしまいめちゃくちゃ悩みました。

色々調べてみた結果、折れ曲がった線を引きたい場合は
LineRendererを2つ使うというのが解決策らしいです。

実際LineRendererを2つ使うと下のようになります。
f:id:MTIMSNO:20160608222319j:plain

ソースコードは以下の通りです。

void Start() {

 // Line1
 CreateLine(Vector3.zero, new Vector3(3.0f,3.0f,0.0f));

 // Line2
 CreateLine(new Vector3(3.0f,3.0f,0.0f), new Vector3(3.0f,-3.0f,0.0f));

}

/// <summary>
/// ライン作成関数
/// </summary>
/// <param name="start">始点</param>
/// <param name="end">終点</param>
private void CreateLine(Vector3 start,Vector3 end)
{

 // オブジェクトの作成
 GameObject newObj = new GameObject();
 // 親子関係設定
 newObj.transform.parent = transform;
 // ラインの作成
 LineRenderer newLine = new LineRenderer();

 // --- 重要 --- //
 newLine = newObj.AddComponent<LineRenderer>();
 // --- 重要 --- //

 // ラインの色
 newLine.SetColors(Color.red,Color.red);
 // ラインの幅
 newLine.SetWidth(0.25f,0.25f);
 // ラインの頂点数?
 newLine.SetVertexCount(2);
 // 始点の設定
 newLine.SetPosition(0, start);
 // 終点の設定
 newLine.SetPosition(1, end);

}

このような方法で曲がっても一定の太さのラインを描くことが出来ます。

ラインとラインのつなぎ目が気になりますが
細くなるよりはマシかと思います。

上記の方法だと、ラインが手前側に表示されない場合がありますので
以下の二つの方法をお試しください。

1・レイヤーの指定

newLine.sortingLayerName = "Line";

のように新しくレイヤーを追加してあげる。

2・z座標の指定
ラインの始点・終点位置のz座標をカメラ側に近づけてあげる。