protected bool CheckBezierCrossingSpawner(Vector3[] nodes) { for (int currIndex = 0; currIndex <= spawner.BezierLength; currIndex++) { Vector3 currentCurvePoint = BezierMath.BernsteinBezier( currIndex / (float)spawner.BezierLength, 2, nodes); if (Vector3.Distance(currentCurvePoint, spawner.transform.position) < spawner.DefenseBezierMinDistance) { return(true); } } return(false); }
IEnumerator BuildBezier(Vector3[] nodes) { var lineRenderer = GetComponent <LineRenderer>(); var collider = GetComponent <EdgeCollider2D>(); List <Vector2> linePoints = new List <Vector2>(); for (int currIndex = 0; currIndex <= bezierLength; currIndex++) { Vector3 currentCurvePoint = BezierMath.BernsteinBezier( currIndex / (float)bezierLength, 2, nodes ); linePoints.Add(currentCurvePoint); } collider.points = linePoints.ToArray(); //The second for loop will render the actual line. This is done to build //the collider before the actual rendering for (int i = 0; i <= bezierLength; i++) { lineRenderer.positionCount = i + 1; lineRenderer.SetPosition(i, linePoints[i]); yield return(null); } }