/// <summary> /// Generate collider2d /// </summary> public void GenerateCollider() { NewArray <Vector2[]>(ref colliderRawPaths, borderPaths.Count); polygonCollider.pathCount = borderPaths.Count; for (int i = 0; i < borderPaths.Count; i++) { PolygonBorderPath colliderPath = borderPaths[i]; NewArray <Vector2>(ref colliderRawPaths[i], colliderPath.points.Length); for (int j = 0; j < colliderPath.points.Length; j++) { SpritePoint currentPoint = _points[colliderPath.points[j]]; colliderRawPaths[i][j] = SpritePositionToLocal(getSpritePositionOfSpritePoint(currentPoint) + currentPoint.colliderOffset); } polygonCollider.SetPath(i, colliderRawPaths[i]); } }
protected void tringulate() { if (triangulator == null) { triangulator = new Triangulator(this); } triangulator.useDeltaPosition = triangulateWithOffsetPosition; triangulator.trinagulate(); borderPaths.Clear(); foreach (var item in triangulator.bigLoops) { PolygonBorderPath newP = new PolygonBorderPath(); borderPaths.Add(newP); List <int> pointList = new List <int>(); foreach (var item2 in item.edgeNodes) { pointList.Add(item2.index); } newP.points = pointList.ToArray(); } }
protected void tringulate() { if (triangulator == null) triangulator = new Triangulator(this); triangulator.useDeltaPosition = triangulateWithOffsetPosition; triangulator.trinagulate(); borderPaths.Clear(); foreach (var item in triangulator.bigLoops) { PolygonBorderPath newP = new PolygonBorderPath(); borderPaths.Add(newP); List<int> pointList = new List<int>(); foreach (var item2 in item.edgeNodes) { pointList.Add(item2.index); } newP.points = pointList.ToArray(); } }