Добавить Collider элементу LineRenderer Unity3D

Всем привет. Я пытаюсь реализовать резинку в Unity, игра 2D. Саму резинку я сделал, но проблема в том, что она не имеет коллайдера, поэтому объекты просто проходят сквозь неё. Как можно сделать так, чтобы от резинки отскакивали посторонние объекты? Или здесь и вовсе не нужен коллайдер, а что-то другое?

PS: резинка рисуется через код с помощью LineRenderer.

private LineRenderer lineRenderer;
private List<RopeSegment> ropeSegments = new List<RopeSegment>();
private float ropeSegLen = 0.25f;
[SerializeField] private int segmentLength = 35;
private float lineWidth = 0.1f;
[SerializeField] private Transform startPoint;
[SerializeField] private Transform endPoint;

void Start()
{
    this.lineRenderer = this.GetComponent<LineRenderer>();
    Vector3 ropeStartPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);

    for (int i = 0; i < segmentLength; i++)
    {
        this.ropeSegments.Add(new RopeSegment(ropeStartPoint));
        ropeStartPoint.y -= ropeSegLen;
    }
}


void Update()
{
    this.DrawRope();
}

private void FixedUpdate()
{
    this.Simulate();
}

private void Simulate()
{
    // SIMULATION
    Vector2 forceGravity = new Vector2(0f, -1.5f);

    for (int i = 1; i < this.segmentLength; i++)
    {
        RopeSegment firstSegment = this.ropeSegments[i];
        Vector2 velocity = firstSegment.posNow - firstSegment.posOld;
        firstSegment.posOld = firstSegment.posNow;
        firstSegment.posNow += velocity;
        firstSegment.posNow += forceGravity * Time.fixedDeltaTime;
        this.ropeSegments[i] = firstSegment;
    }

    //CONSTRAINTS
    for (int i = 0; i < 50; i++)
    {
        this.ApplyConstraint();
    }
}

private void ApplyConstraint()
{
    //Constrant to Mouse

    RopeSegment firstSegment = this.ropeSegments[0];
    firstSegment.posNow = this.startPoint.position;
    this.ropeSegments[0] = firstSegment;

    RopeSegment endSegment = this.ropeSegments[this.segmentLength - 1];
    endSegment.posNow = this.endPoint.position;
    this.ropeSegments[this.segmentLength - 1] = endSegment;

    for (int i = 0; i < this.segmentLength - 1; i++)
    {
        RopeSegment firstSeg = this.ropeSegments[i];
        RopeSegment secondSeg = this.ropeSegments[i + 1];

        float dist = (firstSeg.posNow - secondSeg.posNow).magnitude;
        float error = Mathf.Abs(dist - this.ropeSegLen);
        Vector2 changeDir = Vector2.zero;

        if (dist > ropeSegLen)
        {
            changeDir = (firstSeg.posNow - secondSeg.posNow).normalized;
        }
        else if (dist < ropeSegLen)
        {
            changeDir = (secondSeg.posNow - firstSeg.posNow).normalized;
        }

        Vector2 changeAmount = changeDir * error;
        if (i != 0)
        {
            firstSeg.posNow -= changeAmount * 0.5f;
            this.ropeSegments[i] = firstSeg;
            secondSeg.posNow += changeAmount * 0.5f;
            this.ropeSegments[i + 1] = secondSeg;
        }
        else
        {
            secondSeg.posNow += changeAmount;
            this.ropeSegments[i + 1] = secondSeg;
        }
    }
}

private void DrawRope()
{
    float lineWidth = this.lineWidth;
    lineRenderer.startWidth = lineWidth;
    lineRenderer.endWidth = lineWidth;

    Vector3[] ropePositions = new Vector3[this.segmentLength];
    for (int i = 0; i < this.segmentLength; i++)
    {
        ropePositions[i] = this.ropeSegments[i].posNow;
    }

    lineRenderer.positionCount = ropePositions.Length;
    lineRenderer.SetPositions(ropePositions);
}

public struct RopeSegment
{
    public Vector2 posNow;
    public Vector2 posOld;

    public RopeSegment(Vector2 pos)
    {
        this.posNow = pos;
        this.posOld = pos;
    }

    public static explicit operator GameObject(RopeSegment v)
    {
        throw new NotImplementedException();
    }
}

Ответы (0 шт):