2017-09-08 2 views
-1
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class DrawLinesWithMouse : MonoBehaviour 
{ 
    private List<Vector3> pointsList; 

    // Use this for initialization 
    void Start() 
    { 
     pointsList = new List<Vector3>(); 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     RaycastHit hit; 

     Ray ray = GetComponent<Camera>().ScreenPointToRay(Input.mousePosition); 
     if (Physics.Raycast(ray, out hit, 1000)) 
     { 
      Vector3 hitpoint = hit.point; 
      pointsList.Add(hitpoint); 

      DrawLine(pointsList[0], pointsList[pointsList.Count -1], Color.red, 0.2f); 
     } 
    } 

    void DrawLine(Vector3 start, Vector3 end, Color color, float duration = 0.2f) 
    { 
     GameObject myLine = new GameObject(); 
     myLine.transform.position = start; 
     myLine.AddComponent<LineRenderer>(); 
     LineRenderer lr = myLine.GetComponent<LineRenderer>(); 
     lr.material = new Material(Shader.Find("Particles/Alpha Blended Premultiply")); 
     lr.startColor = color; 
     lr.startWidth = 3f; 
     lr.endWidth = 3f; 
     lr.SetPosition(0, start); 
     lr.SetPosition(1, end); 
     //GameObject.Destroy(myLine, duration); 
    } 
} 

여기에서의 문제는 휴대용 접는 팬과 같은 라인 그리기 점입니다 :마우스를 움직일 때 어떻게 지형에 선을 그릴 수 있습니까?

handheld folding fan

그러나 내가이 예를 들어 곡선 경우를 포함하여 마우스의 이동 위치에 따라 라인을 단지 하나의 선을 그어야 할을 나는 직선뿐만 아니라 원으로 마우스를 움직입니다.

+0

[Trail Renderer] (https://docs.unity3d.com/Manual/class-TrailRenderer.html)을 확인하십시오. 마우스 위치에 빈 gameObject를 추가 할 수 있습니다. 마우스 위치에는 trailRenderer가 있습니다. – Thalthanas

+1

pt0에서 현재 점으로 그리는 대신에, u는 currentPt -1에서 currentPt로 그릴 수 있습니다. – Everts

답변

1
DrawLine(pointsList[0], pointsList[pointsList.Count -1], Color.red, 0.2f); 

이 제품은 제 점으로부터 받고있다 (poinstList [0])의 마지막 포인트 (pointsList [pointsList.Count -1). 대신 두 번째 점에서 마지막 점까지 마지막 점까지 그려야합니다.

DrawLine(pointsList[pointsList.Count -2], pointsList[pointsList.Count -1], Color.red, 0.2f); 
관련 문제