Exemplo n.º 1
0
 void Start()
 {
     thePowerControl    = PowerControlTutorial.S_PowerControl;
     boogieSplineWalker = GetComponent <Boogie_Spline_Walker>();
 }
Exemplo n.º 2
0
    void SpawnPlayerTrainSet(StationScene _ThisStation, int _NumberOfCars)
    {
        if (playerTrainBoogies.Count == 0)
        {
            Vector3 boogiesSpawnOnSpline = lineSpline.FindNearestPointTo(_ThisStation.stopPointOnSpline.position, 25000f);

            GameObject imaginaryBoogieSpawnPos = new GameObject("BoogiesSpawnPos");
            imaginaryBoogieSpawnPos.transform.parent        = _ThisStation.stopPointOnSpline;
            imaginaryBoogieSpawnPos.transform.position      = boogiesSpawnOnSpline;
            imaginaryBoogieSpawnPos.transform.localRotation = Quaternion.Euler(0f, 0f, 0f);

            Vector3 boogiesSpawnPos = imaginaryBoogieSpawnPos.transform.position + imaginaryBoogieSpawnPos.transform.forward * -currentTrainSet.noseToBoogie;

            for (int i = 0; i < _NumberOfCars; i++)
            {
                GameObject          spawnedCar        = null;
                Car_Rotation_Setter carRotationSetter = null;

                for (int j = 0; j < 2; j++)
                {
                    GameObject           spawnedBoogie      = Instantiate(currentTrainSet.boogiePrefab, boogiesSpawnPos, _ThisStation.stopPointOnSpline.rotation);
                    Boogie_Spline_Walker spawneBoogieWalker = spawnedBoogie.GetComponent <Boogie_Spline_Walker>();
                    spawneBoogieWalker.pointsArray = evenPoints.ToArray();
                    playerTrainBoogies.Add(spawnedBoogie);

                    Transform[] closestEvenPointsToBoogie = GetClosestEvenPointNearby(spawnedBoogie.transform.position + spawnedBoogie.transform.forward * .1f, .8f);
                    int         nextEvenPointIndex        = -1;
                    if (closestEvenPointsToBoogie.Length == 1)
                    {
                        nextEvenPointIndex = evenPoints.IndexOf(closestEvenPointsToBoogie[0].position);
                    }
                    else if (closestEvenPointsToBoogie.Length == 2)
                    {
                        nextEvenPointIndex = Mathf.Max(evenPoints.IndexOf(closestEvenPointsToBoogie[0].position), evenPoints.IndexOf(closestEvenPointsToBoogie[1].position));
                    }
                    spawneBoogieWalker.pointIndexTarget = nextEvenPointIndex;

                    if (j == 0)
                    {
                        spawnedCar        = Instantiate(currentTrainSet.carPrefab, spawnedBoogie.transform);
                        carRotationSetter = spawnedCar.GetComponent <Car_Rotation_Setter>();
                        carRotationSetter.bases.Add(spawnedBoogie.transform);
                        spawnedCar.transform.localPosition          = currentTrainSet.carLocalPosToFrontBoogie;
                        imaginaryBoogieSpawnPos.transform.position  = boogiesSpawnPos;
                        imaginaryBoogieSpawnPos.transform.position += imaginaryBoogieSpawnPos.transform.forward * -currentTrainSet.sameCarBoogie;
                        boogiesSpawnPos = imaginaryBoogieSpawnPos.transform.position;

                        if (i == 0)
                        {
                            spawnedCar.gameObject.tag = "Train_Car_Front";
                            carFrontNose = spawnedCar.transform.Find("Nose");
                            firstBoogie  = spawnedBoogie.GetComponent <Boogie_Spline_Walker>();
                        }
                        else if (i == numberOfCar - 1)
                        {
                            spawnedCar.gameObject.tag = "Train_Car_Rear";
                        }
                    }
                    else if (j == 1)
                    {
                        carRotationSetter.bases.Add(spawnedBoogie.transform);
                    }
                }
                imaginaryBoogieSpawnPos.transform.position += imaginaryBoogieSpawnPos.transform.forward * -currentTrainSet.otherCarBoogie;
                boogiesSpawnPos = imaginaryBoogieSpawnPos.transform.position;
            }
            Destroy(imaginaryBoogieSpawnPos.gameObject);
            Debug.Log("Player Train Spawned");
        }
    }