Пример #1
0
        public void OnAddedPathComplete(Path p)
        {
            addedPath = new List <List <Vector3> >();

            List <Vector3?> leftList    = new List <Vector3?>();
            List <Vector3?> leftOneList = new List <Vector3?>();
            List <Vector3?> leftTwoList = new List <Vector3?>();

            List <Vector3?> rightList    = new List <Vector3?>();
            List <Vector3?> rightOneList = new List <Vector3?>();
            List <Vector3?> rightTwoList = new List <Vector3?>();

            for (var i = 0; i < p.vectorPath.Count; i++)
            {
                var pointVectorPath = p.vectorPath[i];

                if (i + 1 < p.vectorPath.Count)
                {
                    var dir = (p.vectorPath[i + 1] - pointVectorPath).normalized;

                    var left    = new Vector2(-dir.y, dir.x);
                    var leftOne = ProjectMath.Vector2Rotate(left, -10);
                    var leftTwo = ProjectMath.Vector2Rotate(left, 10);

                    var right    = new Vector2(dir.y, -dir.x);
                    var rightOne = ProjectMath.Vector2Rotate(right, -10);
                    var rightTwo = ProjectMath.Vector2Rotate(right, 10);

                    leftList.Add(checkRayDistance(Physics2D.Raycast(pointVectorPath, left), pointVectorPath));
                    leftOneList.Add(checkRayDistance(Physics2D.Raycast(pointVectorPath, leftOne), pointVectorPath));
                    leftTwoList.Add(checkRayDistance(Physics2D.Raycast(pointVectorPath, leftTwo), pointVectorPath));

                    rightList.Add(checkRayDistance(Physics2D.Raycast(pointVectorPath, right), pointVectorPath));
                    rightOneList.Add(checkRayDistance(Physics2D.Raycast(pointVectorPath, rightOne), pointVectorPath));
                    rightTwoList.Add(checkRayDistance(Physics2D.Raycast(pointVectorPath, rightTwo), pointVectorPath));
                }
            }

            addedPath.Add(leftList.Where(e => e.HasValue).Select(e => e.Value).ToList());
            addedPath.Add(leftOneList.Where(e => e.HasValue).Select(e => e.Value).ToList());
            addedPath.Add(leftTwoList.Where(e => e.HasValue).Select(e => e.Value).ToList());

            addedPath.Add(rightList.Where(e => e.HasValue).Select(e => e.Value).ToList());
            addedPath.Add(rightOneList.Where(e => e.HasValue).Select(e => e.Value).ToList());
            addedPath.Add(rightTwoList.Where(e => e.HasValue).Select(e => e.Value).ToList());

            addedPath.ForEach(e => Debug.Log(e.Count));
        }