Unity の LineRenderer で線を描画する

シェアする

line renderer

当初線を書く予定は無かったんだけど、マウスの軌道を表示するのにわかりやすいかなと試しに使ってみた。

Sponsored Links

LineRenderer の使い方

空のオブジェクトを作成し、Component -> Effect -> Line Renderer を選択する事でそのオブジェクトで Line Renderer を使用する事ができます。

スクリプトからの制御も簡単で、以下のように点の数と位置を指定するだけで線を描画してくれます。

var lineRenderer = GetComponent(LineRenderer);
lineRenderer.enabled = true;
lineRenderer.SetVertexCount(2);

var position = transform.position;
var next_position = position;
next_position.x += 10;

lineRenderer.SetPosition(0, position);
lineRenderer.SetPosition(1, next_position);

Line Renderer をつかってマウスで描画してみるテスト

全体の制御を行う GameObject とそこから LineRenderer を使用する GameObject を生成し、それをマウスに追随させながら描画してます。大した事は書いてないので解説は省略します。

lineController.js

#pragma strict
public var lineObject : GameObject;

function Update () {
	if (Input.GetMouseButtonDown(0)) {
		Instantiate(lineObject, transform.position, transform.rotation);
	}
}

lineObject.js

#pragma strict

private var deltaTime : float = 0.0;
private var touchInterval : float = 0.05;
private var touchEnable = true;

public var lineObject: GameObject;
private var lineRenderer: LineRenderer;
private var lineIndex: int = 1;

private var controll = true;

function Start () {
	lineRenderer = GetComponent(LineRenderer);
	Debug.Log(lineRenderer);
	lineRenderer.enabled = false;
}

function Update () {
	if (Input.GetMouseButton(0) && touchEnable && controll) {
		touchEnable = false;
		touch();
	}
	
	if (Input.GetMouseButtonUp(0)) {
		controll = false;
	}
	
	deltaTime += Time.deltaTime;
	if (deltaTime > touchInterval) {
		deltaTime = 0;
		touchEnable = true;
	}
}

function touch() {
	var screenPoint = Input.mousePosition;
	screenPoint.z = 10.0;
	var worldPoint = camera.main.ScreenToWorldPoint(screenPoint);
	Debug.Log(worldPoint);

	lineRenderer.enabled = true;
	lineRenderer.SetVertexCount(lineIndex);
	lineRenderer.SetPosition(lineIndex-1, worldPoint);
	lineIndex++;
}
Sponsored Link

シェアする

フォローする