如何用触摸划线?

时间:2016-01-07 11:29:58

标签: c# android unity3d touch drawing

我正在尝试使用LineRenderer绘制一条跟随用户手指移动的线条。到目前为止,我一直无法画线。 这是我得到的代码。

我该怎么做?

 var c1 : Color = Color.white;
 var c2 : Color = Color.white;

 var line : GameObject;

 var lengthOfLineRenderer : int = 5;

 function Update () {

var touchCount : int = 0;

if (Input.GetMouseButtonDown (0)) {

touchCount++;

}

if (Input.touchCount == 1) {

if (Input.GetTouch(0).phase == TouchPhase.Moved) {

  var lineRenderer : LineRenderer = line.AddComponent(LineRenderer);
  lineRenderer.SetColors(c1, c2);
  lineRenderer.SetWidth(0.2,0.2);
  lineRenderer.SetVertexCount(lengthOfLineRenderer);
  lineRenderer.SetPosition(0, gameObject.transform.position);

 }

 }   

 }

1 个答案:

答案 0 :(得分:1)

想法是检查输入位置的位移。如果没有移动或者太小的增量,那么请等待,如果移动足够大,则添加一个顶点并重置所有位置:

这是伪代码:

Vector3 previous;
int vertexCount = 0;
List<Vector3>positions;
void Update(){
    if(Input.detected){
       Vector3 current = Input.position; 
       if(Vector3.Distance(previous, current) < threshold){ return; }
       SetVertexCount(++vertexCount);
       positions.Add(current);
       for (int i= 0; i < vertexCount; i++)
       {
           lineRenderer.SetPosition(i, positions[i].transform.position);
       }
   }
}

位置列表将保留所有先前的位置以传递给线条渲染器。

整个输入部分只是伪代码,应该转换为桌面或移动输入。