본문 바로가기
PROGRAMING📚/Unity📑

[유니티 Unity] LineRenderer를 이용해서 선 긋기

Ta이니 2022. 5. 26.
728x90
반응형

LineRenderer를 이용해서 선 긋기


스크립트를 짜기 전에 먼저 

빈 게임 오브젝트를 하나 만들어서

 

빈 오브젝트 안에 LineRenderer 와 Edge Collider 컴포넌트를 넣어줍니다.

 

 

그리고 Material을 새로 하나 생성해서

Line Renderer의 Materials에 넣어주세요. 

 

 

그런 다음 빈 오브젝트를 프리팹화 시켜주시면 됩니다.

 


스크립트 생성하기

 

프리팹까지 해주었으면 이 프리팹을 생성해서

클릭할때마다 Line을 그려주어서 그림을 그려주는 형식이기 때문에

스크립트를 하나 생성해서 다음 코드를 입력해주세요.

 

  //그림 그리는 함수 
    public void DrawLine_Start()
    {
        StopCoroutine(_DrawLine_Start());
        StartCoroutine(_DrawLine_Start());
    }
    IEnumerator _DrawLine_Start()
    {
        DrawLine_GameRun = true;
        while (DrawLine_GameRun)
        {
            if (Input.GetMouseButtonDown(0))
            {
                CreateLine();
            }

            if (Input.GetMouseButton(0))
            {
                Vector3 tempFingerPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                tempFingerPos.z = 0;
                if (Vector2.Distance(tempFingerPos, fingerPositions[fingerPositions.Count - 1]) > .1f)
                {
                    UpdateLine(tempFingerPos);
                }
            }
            yield return null;
        }
    }

 

   //선그리기
    void CreateLine()
    {
        currentLine = Instantiate(linePrefab, Vector3.zero, Quaternion.identity);
        lineRenderer = currentLine.GetComponent<LineRenderer>();
        edgeCollider = currentLine.GetComponent<EdgeCollider2D>();
        fingerPositions.Clear();

        Vector3 line_StartPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        fingerPositions.Add(line_StartPos);
        fingerPositions.Add(line_StartPos);
       // Debug.Log("line_StartPos" + line_StartPos);
        lineRenderer.SetPosition(0, fingerPositions[0]);
        lineRenderer.SetPosition(1, fingerPositions[1]);
        edgeCollider.points = fingerPositions.ToArray();
    }
    void UpdateLine(Vector2 newFingerPos)
    {
        fingerPositions.Add(newFingerPos);
        lineRenderer.positionCount++;
        lineRenderer.SetPosition(lineRenderer.positionCount - 1, newFingerPos);
        edgeCollider.points = fingerPositions.ToArray();
    }

적용하기

 

인스펙터 창에서 다음 스크립트를 넣으면

다음과 같이 Line Prefeb 안에

아까 전에 생성한 Prefab를 넣어주시면 선이 그려지는 것을 확인 할 수 있습니다.

 

 

728x90
반응형

댓글