Question by 
               GeneticCore · May 07, 2018 at 07:46 PM · 
                portal  
              
 
              Portals not working for game
i have been making a pac-man style game and i have been adding portals to the game, however when i test them only a singular portal works, i have tried remaking the portals, restarting the program, everything and still nothing works.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class BakkaMan : MonoBehaviour {
 public float speed = 4.0f;
 public Sprite idleSprite;
 private Vector2 direction = Vector2.zero;
 private Vector2 nextDirection;
 private Node currentNode, targetNode, previousNode;
 // Use this for initialization
 void Start() {
     Node node = GetNodeAtPosition(transform.localPosition);
     if (node != null) {
         currentNode = node;
         Debug.Log(currentNode);
     }
     direction = Vector2.left;
     ChangePosition (direction);
 }
 // Update is called once per frame
 void Update()  {
     CheckInput();
     Move();
     UpdateOrientation();
     
     UpdateAnimationState();
 }
 void CheckInput() {
     if (Input.GetKeyDown(KeyCode.LeftArrow)) {
         ChangePosition(Vector2.left);
     }
     else if (Input.GetKeyDown(KeyCode.RightArrow)) {
         ChangePosition(Vector2.right);
     }
     else if (Input.GetKeyDown(KeyCode.UpArrow)) {
         ChangePosition(Vector2.up);
     }
     else if (Input.GetKeyDown(KeyCode.DownArrow)) {
         ChangePosition(Vector2.down);
     }
     else if (Input.GetKeyDown(KeyCode.W)) {
         ChangePosition(Vector2.up);
     }
     else if (Input.GetKeyDown(KeyCode.S)) {
         ChangePosition(Vector2.down);
     }
     else if (Input.GetKeyDown(KeyCode.A))
     {
         ChangePosition(Vector2.left);
     }
     else if (Input.GetKeyDown(KeyCode.D))
     {
         ChangePosition(Vector2.right);
     }
 }
 void ChangePosition (Vector2 d) {
     if (d != direction) 
         nextDirection = d;
     if (currentNode != null) {
         Node moveToNode = CanMove(d);
         if (moveToNode !=null) {
             direction = d;
             targetNode = moveToNode;
             previousNode = currentNode;
             currentNode = null;
         }
         
     }
 }
 void Move() {
     if (targetNode !=currentNode && targetNode != null) {
         if (nextDirection == direction * -1) {
             direction *= -1;
             Node tempNode = targetNode;
             targetNode = previousNode;
             previousNode = tempNode;
         }
         if (OverShotTarget()) {
             currentNode = targetNode;
             transform.localPosition = currentNode.transform.position;
             GameObject otherPortal = GetPortal(currentNode.transform.position);
             if (otherPortal != null) {
                 transform.localPosition = otherPortal.transform.position;
                 currentNode = otherPortal.GetComponent<Node> ();
             }
             Node moveToNode = CanMove (nextDirection);
             if (moveToNode != null)
                 direction = nextDirection;
             if (moveToNode == null)
                 moveToNode = CanMove(direction);
             if (moveToNode != null) {
                 targetNode = moveToNode;
                 previousNode = currentNode;
                 currentNode = null;
             } else {
                 direction= Vector2.zero;
             }
         } else {
             transform.localPosition += (Vector3)(direction * speed) * Time.deltaTime;
         }
     }
 }
 void MoveToNode(Vector2 d) {
     Node moveToNode = CanMove(d);
     if (moveToNode != null) {
         transform.localPosition = moveToNode.transform.position;
         currentNode = moveToNode;
     }
 }
 void UpdateOrientation() {
     if (direction == Vector2.left) {
         transform.localScale = new Vector3(-1, 1, 1);
         transform.localRotation = Quaternion.Euler(0, 0, 0);
     }
     else if (direction == Vector2.right) {
         transform.localScale = new Vector3(1, 1, 1);
         transform.localRotation = Quaternion.Euler(0, 0, 0);
     }
     else if (direction == Vector2.up) {
         transform.localScale = new Vector3(1, 1, 1);
         transform.localRotation = Quaternion.Euler(0, 0, 90);
     }
     else if (direction == Vector2.down)
     {
         transform.localScale = new Vector3(1, 1, 1);
         transform.localRotation = Quaternion.Euler(0, 0, 270);
     }
 }
 void UpdateAnimationState () {
     if (direction == Vector2.zero) {
         GetComponent<Animator>().enabled = false;
         GetComponent<SpriteRenderer>().sprite = idleSprite;
     } else {
         GetComponent<Animator>().enabled = true;
     }
 }
 Node CanMove(Vector2 d) {
     Node moveToNode = null;
     for (int i = 0; i < currentNode.neighbours.Length; i++) {
         if (currentNode.CorrectDirections[i] == d) {
             moveToNode = currentNode.neighbours[i];
             break;
         }
     }
     return moveToNode;
 }
 Node GetNodeAtPosition(Vector2 pos) {
     GameObject tile = GameObject.Find("Game").GetComponent<GameBoard>().board[(int)pos.x, (int)pos.y];
     if (tile != null) {
         return tile.GetComponent<Node>();
     }
     return null;
 }
 bool OverShotTarget() {
     float nodeToTarget = LengthFromNode(targetNode.transform.position);
     float nodeToSelf = LengthFromNode(transform.localPosition);
     return nodeToSelf > nodeToTarget;
 }
 float LengthFromNode(Vector2 targetPositon) {
     Vector2 vec = targetPositon - (Vector2)previousNode.transform.position;
     return vec.sqrMagnitude;
 }
 GameObject GetPortal(Vector2 pos) {
     GameObject tile = GameObject.Find("Game").GetComponent<GameBoard>().board[(int)pos.x, (int)pos.y];
     if (tile != null) {
         if (tile.GetComponent<Tile>() != null) {
             if (tile.GetComponent<Tile>().isPortal) {
                 GameObject otherPortal = tile.GetComponent<Tile>().portalReciever;
                 return otherPortal;
             }
         }
     }
     return null;
 }
 
 
               }
               Comment
              
 
               
              Your answer