void Start() { thePowerControl = PowerControlTutorial.S_PowerControl; boogieSplineWalker = GetComponent <Boogie_Spline_Walker>(); }
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"); } }