ограничить количество линий, которые пользователь может нарисовать и стереть - PullRequest
0 голосов
/ 08 июля 2019

У меня есть код, который позволяет пользователю рисовать линии.
Проблема в том, что я не знаю, как ограничить число линий, которые пользователь может создать, одной и как удалить его, чтобы пользователь могпопробуйте еще раз.

public GameObject linePrefab;
public GameObject currentLine;

public LineRenderer lineRenderer;
public EdgeCollider2D edgeCollider;
public List<Vector2> fingerPositions;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        CreateLine();
    }
    if (Input.GetMouseButton(0))
    {
        Vector2 tempFingerPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        if (Vector2.Distance(tempFingerPos, fingerPositions[fingerPositions.Count - 1]) > .1f)
        {
            UpdateLine(tempFingerPos);
        }
    }
}

void CreateLine()
{
    currentLine = Instantiate(linePrefab, Vector3.zero, Quaternion.identity);
    lineRenderer = currentLine.GetComponent<LineRenderer>();
    edgeCollider = currentLine.GetComponent<EdgeCollider2D>();
    fingerPositions.Clear();
    fingerPositions.Add(Camera.main.ScreenToWorldPoint(Input.mousePosition));
    fingerPositions.Add(Camera.main.ScreenToWorldPoint(Input.mousePosition));
    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();
}

1 Ответ

0 голосов
/ 08 июля 2019

Как насчет этого кода:

void Update()
{
//--- some code here.
    if (Input.GetMouseButtonDown(0))
    {
        if(CanDrawLine)  //Checking if allowed to create line
           CreateLine();
    }
    if (Input.GetMouseButton(0))
    {
        if(CanDrawLine)  //Checking if allowed to create line
        {
            Vector2 tempFingerPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            if (Vector2.Distance(tempFingerPos, fingerPositions[fingerPositions.Count - 1]) > .1f)
            {
                UpdateLine(tempFingerPos);
            }
        }
    }
//--- some code here
}

[SerializeField]
int m_maxCountToCreate = 10;
int m_numberOfLinesCreated = 0;

bool CanDrawLine
{
   get { return m_numberOfLinesCreated == m_maxCountToCreate; }
}


void CreateLine()
{
    m_numberOfLinesCreated++;
    // your code here.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...