private void Update() { if (PauseMenuManager.isGamePaused) { return; } if (isDead || CurrentRoad == null) { FadeOut(); return; } float step = speed * Time.deltaTime; transform.position = Vector3.MoveTowards(transform.position, CurrentRoad.Node.position, step); Quaternion rotateTo = (PreviousRoad == null) ? CurrentRoad.Node.rotation : PreviousRoad.Node.rotation; transform.rotation = Quaternion.RotateTowards(transform.rotation, rotateTo, 512.0f * Time.deltaTime); if (Vector3.Distance(transform.position, CurrentRoad.Node.position) < 0.001f) { Road tempRoad = CurrentRoad; if (CurrentRoad.Type == RoadType.Straight) { StraightRoad straightRoad = (StraightRoad)CurrentRoad; CurrentRoad = (PreviousRoad == straightRoad.RoadA) ? straightRoad.RoadB : straightRoad.RoadA; } else if (CurrentRoad.Type == RoadType.Curved) { CurvedRoad curvedRoad = (CurvedRoad)CurrentRoad; if (PreviousRoad == curvedRoad.RoadB1 || PreviousRoad == curvedRoad.RoadB2) { CurrentRoad = curvedRoad.RoadA; } else if (curvedRoad.IsToggable) { CurrentRoad = (curvedRoad.ToggleRotate) ? curvedRoad.RoadB1 : curvedRoad.RoadB2; } else { CurrentRoad = (PreviousRoad == curvedRoad.RoadA) ? ((curvedRoad.RoadB1 != null) ? curvedRoad.RoadB1 : curvedRoad.RoadB2) : curvedRoad.RoadA; } } else if (CurrentRoad.Type == RoadType.Merge) { MergeRoad mergeRoad = (MergeRoad)CurrentRoad; CurrentRoad = (PreviousRoad == mergeRoad.RoadA1 || PreviousRoad == mergeRoad.RoadA2) ? mergeRoad.RoadB : mergeRoad.RoadA1; } else if (CurrentRoad.Type == RoadType.Slip) { SlipRoad slipRoad = (SlipRoad)CurrentRoad; CurrentRoad = (slipRoad.ToggleRotate) ? slipRoad.RoadB1 : slipRoad.RoadB2; } PreviousRoad = tempRoad; } else { FadeIn(); } }
void Start() { SR = this.GetComponent <StraightRoad>(); CR = this.GetComponent <CurvedRoad>(); currentPlacement = SR; map = new int[gridSizeX, gridSizeY]; for (int i = 0; i < map.GetLength(0); i++) { for (int j = 0; j < map.GetLength(1); j++) { map[i, j] = (int)cellVal.EMPTY; } } selectCell(); }