コード例 #1
0
        public List <Vector2> GetGroundPath(float startX, float startY, float endX, float endY, int frame)
        {
            var cells = MapDataService.GetCells(startX, startY, MaxDistance);
            var end   = new Vector2(endX, endY);
            var best  = cells.Where(c => c.Walkable && !c.PathBlocked).OrderBy(c => c.EnemyGroundDpsInRange).ThenBy(c => Vector2.DistanceSquared(end, new Vector2(c.X, c.Y))).FirstOrDefault();

            if (best != null)
            {
                var grid = GetGroundGrid(frame);
                return(GetPath(grid, startX, startY, best.X, best.Y));
            }

            return(new List <Vector2>());
        }
コード例 #2
0
        public List <Vector2> GetSafeGroundPath(float startX, float startY, float endX, float endY, int frame)
        {
            var cells = MapDataService.GetCells(startX, startY, 10);
            var end   = new Vector2(endX, endY);
            var best  = cells.Where(c => c.Walkable).OrderBy(c => c.EnemyGroundDpsInRange).ThenBy(c => Vector2.DistanceSquared(end, new Vector2(c.X, c.Y))).FirstOrDefault();

            if (best != null)
            {
                return(new List <Vector2> {
                    new Vector2(startX, startY), new Vector2(best.X, best.Y)
                });
            }
            return(new List <Vector2>());
        }
コード例 #3
0
        public List <Vector2> GetSafeGroundPath(float startX, float startY, float endX, float endY, int frame)
        {
            var grid = GetGroundDamageGrid(frame);
            var path = GetPath(grid, startX, startY, endX, endY);

            if (path.Count() == 0)
            {
                var cells = MapDataService.GetCells(startX, startY, 1);
                var best  = cells.Where(c => c.Walkable).OrderBy(c => c.EnemyGroundDpsInRange).FirstOrDefault();
                if (best != null)
                {
                    path = new List <Vector2> {
                        new Vector2(startX, startY), new Vector2(best.X, best.Y)
                    };
                }
            }

            return(path);
        }