2017-03-06 18 views
0

ラインレンダラー内のノードの位置を取得する方法があるのだろうかと思います。私が作業しているプロジェクトでは、私はラインレンダラーを持っているPseudoLineゲームオブジェクトを持っています。私が線を引くと、私はPseudoLineをクローンして新しい線を作成します。単純に使用する:LineRendererの位置を取得

Instantiate(gameObject); 

私がしたいことは、プレハブとその上にラインレンダラを持つ新しいgameobjectsを作成することです。 PseudoLineの位置を私の新しいゲームオブジェクトのラインレンダラーにコピーしたいと思います。このようなもの:

私はドキュメントをチェックして、便利な組み込み機能が見つかりませんでした。どうすればこの問題を解決できますか?

答えて

1

LineRendererの位置を取得するには、LineRenderer.GetPositionsLineRenderer.GetPosition関数を使用できます。

この場合、LineRenderer.GetPositions関数を使用することをお勧めします。これは、ポスションのコピー全体を作成しており、LineRenderer.GetPositionsがこれに対して高速になるためです。

これを行うには、新しいVector3アレイを作成する必要があります。このアレイの長さは、複製するLineRendererLineRenderer.numPositionsの値にする必要があります。 Unity(5.6)の新しいバージョンでは、この変数の名前がLineRenderer.positionCountに変更されました。


GameObject oldLine = gameObject; 
GameObject newLine = Instantiate(oldLine); 

LineRenderer oldLineComponent = oldLine.GetComponent<LineRenderer>(); 

//Get old Position Length 
Vector3[] newPos = new Vector3[oldLineComponent.positionCount]; 
//Get old Positions 
oldLineComponent.GetPositions(newPos); 

//Copy Old postion to the new LineRenderer 
newLine.GetComponent<LineRenderer>().SetPositions(newPos); 
関連する問題