示例#1
0
    private void Start()
    {
        carControl   = GetComponent <AlternateCarController>();
        carRGBody    = GetComponent <Rigidbody>();
        myPlateAgent = gameObject.GetComponent <PlateAgent>();
        //ballRGBody = GameObject.Find("Golfball_G").GetComponent<Rigidbody>();
        if (gameObject.CompareTag("Player"))
        {
            ballRGBody     = gameObject.transform.parent.Find("Golfball_G").GetComponent <Rigidbody>();
            plateTransform = transform.Find("CarModel").Find("Teller");
        }
        else if (gameObject.CompareTag("Trainingsfahrzeug"))
        {
            ballRGBody     = gameObject.transform.parent.Find("Trainingsball").GetComponent <Rigidbody>();
            plateTransform = transform.Find("CarModel").Find("Trainingsteller");
        }

        else
        {
            Debug.LogError("Reset Script: Ich habe keinen Ball gefunden");
        }
        clearResetText();
    }
示例#2
0
    private void Awake()
    {
        myPlateAgent = gameObject.GetComponent <PlateAgent>();

        //Sollte nur von Player Auto übernommen werden
        if (!myPlateAgent.isTrainingCar)
        {
            sharedData.TrainingMode    = activateTrainingMode;
            sharedData.debugMode       = activateDebugMode;
            sharedData.currentMaxSpeed = maxSpeed;
            sharedData.maxSpeed        = maxSpeed;
            sharedData.maxTorque       = maxTorque;
            sharedData.brakeTorque     = brakeTorque;
            sharedData.maxWheelAngle   = maxWheelAngle;
            sharedData.nonMovingCar    = nonMovingCar;

            //Prüfe ob die Ordnerstruktur für das Training existiert und erstelle es ggf.
            Directory.CreateDirectory(dirPathTrainingRoute + "debugLogs");
            Directory.CreateDirectory(dirPathTrainingRoute + "default/debugLogs");
            Directory.CreateDirectory(dirPathTrainingRoute + "einfach/debugLogs");
            Directory.CreateDirectory(dirPathTrainingRoute + "mittel/debugLogs");
            Directory.CreateDirectory(dirPathTrainingRoute + "schwer/debugLogs");

            //Initialisiere das Trainingsfile Statisik Dictionary
            if (sharedData.TrainingMode)
            {
                Debug.Log("Starte Initialisierung des Statistik Dictionarys*****");
                sharedData.anzahlEinfacherStrecken = LoadTrainingFilesToDict(dirPathTrainingRoute + "einfach/", sharedData.trainingsStatPerFile);
                sharedData.anzahlMittlererStrecken = LoadTrainingFilesToDict(dirPathTrainingRoute + "mittel/", sharedData.trainingsStatPerFile);
                sharedData.anzahlSchwererStrecken  = LoadTrainingFilesToDict(dirPathTrainingRoute + "schwer/", sharedData.trainingsStatPerFile);
                Debug.Log("Alle Trainingsfiles in die Statistik geladen");

                foreach (KeyValuePair <string, Vector2> item in sharedData.trainingsStatPerFile)
                {
                    Debug.LogFormat("Habe Datei in Stat: {0}", item.Key);
                }

                float gesamtZahlStrecken = sharedData.anzahlEinfacherStrecken + sharedData.anzahlMittlererStrecken + sharedData.anzahlSchwererStrecken;
                if (gesamtZahlStrecken == 0)
                {
                    throw new Exception("Trainingmodus aktiv, aber keine Trainingsstrecken gefunden");
                }
                sharedData.anteilLeichteStrecken   = sharedData.anzahlEinfacherStrecken / gesamtZahlStrecken;
                sharedData.anteilMittlererStrecken = sharedData.anzahlMittlererStrecken / gesamtZahlStrecken;
                sharedData.anteilSchwererStrecken  = sharedData.anzahlSchwererStrecken / gesamtZahlStrecken;
                Debug.LogFormat("Streckenanteile: einfach: {0}, mittel:{1}, schwer {2}", sharedData.anteilLeichteStrecken, sharedData.anteilMittlererStrecken, sharedData.anteilSchwererStrecken);

                //Erhöhe Wahrscheinlichkeit, dass leichte Strecken kommen -> besseres Trainingsergebnis, weniger schlechte Strecken
                int difficultyFactorMiddle = 2; //Anteil der vom mittleren Streckenanteil an die leichten geht -> darf nicht gleich 0 sein
                int difficultyFactorHard   = 2; //Anteil der vom schweren Streckenanteil an die leichten geht -> darf nicht gleich 0 sein
                sharedData.anteilLeichteStrecken   += (sharedData.anteilMittlererStrecken / difficultyFactorMiddle + sharedData.anteilSchwererStrecken / difficultyFactorHard);
                sharedData.anteilMittlererStrecken -= sharedData.anteilMittlererStrecken / difficultyFactorMiddle;
                sharedData.anteilSchwererStrecken  -= sharedData.anteilSchwererStrecken / difficultyFactorHard;
                Debug.LogFormat("Streckenanteile Update: einfach: {0}, mittel:{1}, schwer {2}", sharedData.anteilLeichteStrecken, sharedData.anteilMittlererStrecken, sharedData.anteilSchwererStrecken);
            }


            if (sharedData.nonMovingCar)
            {
                sharedData.maxSpeed = 0f;
                Debug.Log("***Habe Fahrzeug bewegungsunfähig gemacht");
            }
        }
    }