예제 #1
0
    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);
    }
예제 #2
0
    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);
    }