Quantcast
Channel: Questions in topic: "javascipt"
Viewing all articles
Browse latest Browse all 1875

Variable Not Changing.

$
0
0
Hi all, I've bumped in to another problem. So I have a variable here: private var currentNode : GameObject; And I have two functions: function MarkingCurrentAsClosed() { var nodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo); nodeInfo.isCurrent = true; nodeInfo.Closed = true; } #------------------------------------------ public function PickAndMove() { var leastFCost : int; var leastCostNode : GameObject; for(Node in openList) { var nodeInfo : NodeInfo = Node.GetComponent(NodeInfo); if(leastFCost == 0) { leastFCost = nodeInfo.F; leastCostNode = Node; } else { if(leastFCost > nodeInfo.F) { leastFCost = nodeInfo.F; leastCostNode = Node; } if(leastFCost <= nodeInfo.F) { leastFCost = leastFCost; } } } var currentNodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo); currentNodeInfo.isCurrent = false; currentNode = leastCostNode; } As you can see, in the function "PickAndMove" I have changed the value of "currentNode" to the value in "leastCostNode". currentNode = leastCostNode; And when I tested this, I discovered that the value of currentNode is not changing, do I have to make something like Global or Public, And what am I doing wrong? Any Answer or related unity Forms will be appreciated. Full script: import System.Collections.Generic; private var Nodes : GameObject[]; private var currentNode : GameObject; private var targetNode : GameObject; private var Coordinates = new Array (); private var reachTarget : boolean = false; public var startProject : boolean = false; private var firstEntering : boolean = true; private var Update : boolean = false; private var openList : List. = new List.(); function Start() { AssignCoords(); Nodes = GameObject.FindGameObjectsWithTag("Node"); } function FixedUpdate () { if(startProject == true) { if(reachTarget == false) { Astar_Pathfinding(); } } } function Initialize() { for(Node in Nodes) { var nodeInfo : NodeInfo = Node.GetComponent(NodeInfo); if(nodeInfo.isStart == true) { currentNode = Node; } if(nodeInfo.isEnd == true) { targetNode = Node; } } } function AssignCoords() { Coordinates.length = 8; Coordinates[0] = Vector3(0,0,1); Coordinates[1] = Vector3(1,0,1); Coordinates[2] = Vector3(1,0,0); Coordinates[3] = Vector3(1,0,-1); Coordinates[4] = Vector3(0,0,-1); Coordinates[5] = Vector3(-1,0,-1); Coordinates[6] = Vector3(-1,0,0); Coordinates[7] = Vector3(-1,0,1); } function Astar_Pathfinding() { if(firstEntering == true) { Initialize(); firstEnetering = false; } MarkingCurrentAsClosed(); AnalyzeAdjacentsBlocks(); PickAndMove(); } function MarkingCurrentAsClosed() { var nodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo); nodeInfo.isCurrent = true; nodeInfo.Closed = true; } function AnalyzeAdjacentsBlocks() { var currentNodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo); for(i = 0; i < Coordinates.length; i++) { for(Node in Nodes) { var nodeInfo : NodeInfo = Node.GetComponent(NodeInfo); if(Node.transform.position == currentNode.transform.position + Coordinates[i] && nodeInfo.Closed == false) { if(nodeInfo.Opened == true) { var beforeG : int = nodeInfo.G; var beforeF : int = nodeInfo.F; nodeInfo.FindingH(targetNode); nodeInfo.FindingG(i); nodeInfo.FindingF(currentNodeInfo.F); if(Update == true) { nodeInfo.UpdatingCosts(); Update = false; } CompareNode(Node, nodeInfo.tG, nodeInfo.tF, beforeG, beforeF); } else { nodeInfo.Opened = true; openList.Add(Node); nodeInfo.Parent = currentNode; if(targetNode != null) { nodeInfo.FindingH(targetNode); nodeInfo.FindingG(i); nodeInfo.FindingF(currentNodeInfo.F); nodeInfo.UpdatingCosts(); } } } } } } function CompareNode(Node, newG, newF, beG, beF) { if(newF > beF) { return; } else { Update = true; } } public function PickAndMove() { var leastFCost : int; var leastCostNode : GameObject; for(Node in openList) { var nodeInfo : NodeInfo = Node.GetComponent(NodeInfo); if(leastFCost == 0) { leastFCost = nodeInfo.F; leastCostNode = Node; } else { if(leastFCost > nodeInfo.F) { leastFCost = nodeInfo.F; leastCostNode = Node; } if(leastFCost <= nodeInfo.F) { leastFCost = leastFCost; } } } var currentNodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo); currentNodeInfo.isCurrent = false; currentNode = leastCostNode; }

Viewing all articles
Browse latest Browse all 1875

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>