当初線を書く予定は無かったんだけど、マウスの軌道を表示するのにわかりやすいかなと試しに使ってみた。
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 | Unity - Unity Manual
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++;
}
コメント