Exemple #1
0
    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();
    }