void Start()
    {
        raceManager  = FindObjectOfType <RaceManager>();
        spoorManager = FindObjectOfType <SpoorManager3D>();
        player       = GetComponent <Player>();

        //Vraag spoorinformatie aan Spoormanager
        lapLength    = spoorManager.lapLength;
        lapsToFinish = spoorManager.lapsToFinish;
        puntenLijst  = spoorManager.puntenLijst;
        scale        = spoorManager.scale;
    }
Esempio n. 2
0
    void Start()
    {
        rectTransform        = GetComponent <RectTransform>();
        spoorManager         = GetComponent <SpoorManager3D>();
        okButtonRace         = FindObjectOfType <OkButtonRace>();
        communicationManager = FindObjectOfType <CommunicationManager>();
        leaderBoard          = FindObjectOfType <LeaderBoard>();

        storageManager       = GameObject.FindGameObjectWithTag("StorageManager");
        storageManagerScript = storageManager.GetComponent <StorageManager>();

        //Vraag de naam van de spelers, het aantal spelers en de mapData aan de StorageManager
        playerNames   = new List <string>(storageManagerScript.activePlayers.Keys);
        aantalSpelers = playerNames.Count;
        mapData       = storageManagerScript.mapData;

        //Instantieer de map en geef deze de juiste waardes
        map = Instantiate(mapData.mapPrefab);
        map.transform.position   = mapData.mapPosition;
        map.transform.rotation   = Quaternion.Euler(mapData.mapRotation);
        map.transform.localScale = mapData.mapScale;

        //Geef de juiste waardes aan de Camera
        mainCamera = Camera.main;
        mainCamera.transform.position = mapData.cameraPosition;
        mainCamera.transform.rotation = Quaternion.Euler(mapData.cameraRotation);
        mainCamera.fieldOfView        = mapData.cameraFOV;

        //Geef de juiste waardes aan het plain
        plain = gameObject;
        plain.transform.position   = mapData.planePosition;
        plain.transform.rotation   = Quaternion.Euler(mapData.planeRotation);
        plain.transform.localScale = mapData.planeScale;

        //Geef de juiste waardes aan het spoor
        spoorManager.scale = mapData.absoluteScale;
        spoorManager.PrepareTrack();

        //Geef de juiste waardes aan het light
        light = FindObjectOfType <Light>().gameObject;
        light.transform.rotation = Quaternion.Euler(mapData.lightRotation);

        //Voeg de mogelijke spelerkleuren toe aan een lijst
        orderedColorAnimationPrefabs.Add(yellowBikerPrefab);
        orderedColorAnimationPrefabs.Add(greenBikerPrefab);
        orderedColorAnimationPrefabs.Add(orangeBikerPrefab);
        orderedColorAnimationPrefabs.Add(pinkBikerPrefab);
        orderedColorAnimationPrefabs.Add(redBikerPrefab);
        orderedColorAnimationPrefabs.Add(blackBikerPrefab);

        //Instantieer alle spelers
        for (int index = 0; index < aantalSpelers; index++)
        {
            //Instantieer de speler en geef zijn Player script de informatie over deze speler
            GameObject spelerClone      = Instantiate(speler, spoor.transform);
            Player     spelerCloneFiets = spelerClone.GetComponent <Player>();
            spelerCloneFiets.fietsnummer = index + 1;
            spelerCloneFiets.naam        = playerNames[index];
            spelerCloneFiets.spelerMassa = 75;

            playerObjects.Add(spelerClone);
            orderedPlayers.Add(spelerCloneFiets);

            //Geef de speler zijn kleur, positie en schaal
            playerColors.Add(playerNames[index], colorOptions[index]);
            GameObject playerAnimation = Instantiate(orderedColorAnimationPrefabs[index], spelerClone.transform);
            playerAnimation.transform.localRotation = Quaternion.Euler(playerRotation);
            playerAnimation.transform.localPosition = playerPosition;
            playerAnimation.transform.localScale    = playerScale;

            //Activeer de fiets in de Arduino en geef hem het geselecteerde vermogen
            communicationManager.SendPort(4, index + 1, 1);
            communicationManager.SendPort(6, index + 1, storageManagerScript.activePlayers[playerNames[index]]);

            //Creer een subdisplay voor de speler op het leaderboard
            leaderBoard.InstantiateSubdisplay();
        }

        //Instantieer de timer die aftelt naar het begin van de race
        timer       = Instantiate(timerPrefab, FindObjectOfType <Canvas>().transform);
        timerScript = timer.GetComponent <RaceTimer>();
    }