Я хочу рисовать объект и делать его физическим, но проблема! Если быстро дёрнуть мышкой, то линия будет длиннее, чем если бы я рисовал медленно. Из-за того, что я ограничиваю возможность рисовать (тип, не больше 90 точек). Получается, что если игрок делает быстрые движения, то линия в 2-5 раз длиннее, чем у тех, кто медленно рисует. Как быть?
Первый скрипт
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DrawManager : MonoBehaviour
{
    private Camera _cam;
    [SerializeField]
    private Line _linePrefab;
    private Line _currentLine;
    public const float RESOLUTIO = 0.1f;
    public int MaxValueDistance = 500;
    public int currnetValueDistance;
    private void Start()
    {
        _cam = Camera.main;
    }
    private void OnEnable()
    {
        EventBus.LineWasDrawing += AddCurnetValueDistance;
    }
    private void OnDisable()
    {
        EventBus.LineWasDrawing -= AddCurnetValueDistance;
    }
    private void AddCurnetValueDistance()
    {
        currnetValueDistance++;
    }
    private void Update()
    {
        if (currnetValueDistance < MaxValueDistance)
        {
            Vector2 mousePos = _cam.ScreenToWorldPoint(Input.mousePosition);
            if (Input.GetMouseButtonDown(0)) _currentLine = Instantiate(_linePrefab, mousePos, Quaternion.identity);
            if (Input.GetMouseButton(0)) _currentLine.SetPosition(mousePos, currnetValueDistance, MaxValueDistance);
        }
    }
}
Второй, который отвечает за линию саму
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Line : MonoBehaviour
{
    [SerializeField]
    private LineRenderer _renderer;
    [SerializeField]
    private EdgeCollider2D _collider;
    private List<Vector2> _points = new List<Vector2>();
    void Start()
    {
        _collider.transform.position -= transform.position;
    } 
    public void SetPosition(Vector2 pos,  int currnetValueDistance, int MaxValueDistance)
    {
        if(currnetValueDistance < MaxValueDistance)
        {
            if (!CanAppend(pos)) return;
            _points.Add(pos);
           _renderer.positionCount++;
            _renderer.SetPosition(_renderer.positionCount - 1, pos);
            _collider.points = _points.ToArray();
            EventBus.LineWasDrawing?.Invoke();
        }
       
    }
    private bool CanAppend(Vector2 pos)
    {
        if (_renderer.positionCount == 0) return true;
        return Vector2.Distance(_renderer.GetPosition(_renderer.positionCount - 1), pos) > DrawManager.RESOLUTIO;
    }
}