public List <Node> pathFind(int startX, int startZ, int destX, int destZ) { int n = 0; Node startNode = grid.GetNode(startX, startZ); Node targetNode = grid.GetNode(destX, destZ); List <Node> openSet = new List <Node>(); HashSet <Node> ClosedSet = new HashSet <Node>(); openSet.Add(startNode); while (openSet.Count > 0) { n++; Node currentNode = openSet[0]; for (int i = 1; i < openSet.Count; i++) { if (openSet[i].FCost < currentNode.FCost || openSet[i].FCost == currentNode.FCost) { if (openSet[i].hCost < currentNode.hCost) { currentNode = openSet[i]; } } } openSet.Remove(currentNode); ClosedSet.Add(currentNode); if (currentNode == targetNode) { return(RetracePath(startNode, targetNode)); } foreach (Node neighbour in grid.GetNeighbours(currentNode)) { if (ClosedSet.Contains(neighbour)) { continue; } int costToNeighbour = currentNode.gCost + AstarGrid.GetDistance(currentNode, neighbour); if (costToNeighbour < neighbour.gCost || !openSet.Contains(neighbour)) { neighbour.gCost = costToNeighbour; neighbour.hCost = AstarGrid.GetDistance(neighbour, targetNode); neighbour.parent = currentNode; if (!openSet.Contains(neighbour)) { openSet.Add(neighbour); } } } } Debug.Log(n); return(null); }
private void _findPath(Index target) { ChangeState(AgentState.Idle); var curIndex = AstarGrid.GetIndex(SelfBaseUnit.transform.position); AstarGrid.FindPath(curIndex, target, IsTriggerDoTraversal ? Traversal2D : null, OnPathFound); }
void Start() // setup references { grid = GameObject.Find("Grid"); level = new GameObject[NumberOfLevels]; level[0] = GameObject.Find("tmapXY_0"); level[1] = GameObject.Find("tmapXY_1"); Astar = GameObject.Find("A*"); script = Astar.GetComponent <AstarGrid>(); }
void Start() { grid = GetComponent <AstarGrid>(); FindPath(grid.startPos, grid.endPos); }
void Awake() { ag = grid.GetComponent<AstarGrid>(); }
void Start() { m_grid = GetComponent <AstarGrid>(); }
public void Awake() { Astar = GameObject.FindWithTag("Grid"); _grid = Astar.GetComponent <AstarGrid>(); }