void Start() { path = GetComponentInChildren <LineRenderer>(); col = GetComponent <PolygonCollider2D>(); Vector3[] points = CalculateLine(); Torus2D lineCol = CalculateCollider(points, lineWidth); col.pathCount = 2; col.SetPath(0, lineCol.outside); col.SetPath(1, lineCol.inside); DrawCircle(points, lineWidth); }
static Torus2D CalculateCollider(Vector3[] nodes, float width) { Torus2D torusCollider = new Torus2D(); torusCollider.outside = new Vector2[nodes.Length]; torusCollider.inside = new Vector2[nodes.Length]; for (int i = 0; i < nodes.Length; i++) { Vector3 nodePosition = nodes[i]; Vector2 directionFromCentre = new Vector2(nodePosition.x, nodePosition.z); // assumes the center is 0, 0, 0 torusCollider.outside[i] = new Vector2(nodePosition.x, nodePosition.z) - directionFromCentre; torusCollider.inside[i] = new Vector2(nodePosition.x + width, nodePosition.z) - directionFromCentre; } return(torusCollider); }