我正在尝试使用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);
}
}
}
答案 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);
}
}
}
位置列表将保留所有先前的位置以传递给线条渲染器。
整个输入部分只是伪代码,应该转换为桌面或移动输入。