public ArrowController(float startTime, GameObject arrowPrefab, TrackRunner trackRunner) { _startTime = startTime; GameObject go = Object.Instantiate(arrowPrefab, new Vector3(0, 7, 0), Quaternion.identity) as GameObject; _material = go.transform.Find("Arrow").GetComponent<Renderer>().material; _trackFollowingGO = new TrackFollowingGameObject(go, trackRunner, Vector3.forward); }
public TrainController(LevelTree level, SplitTrack startTrack, GameObject trainPrefab, TrackConnectionResolver connectionResolver) { SubTrackGroup stGroup = startTrack.FirstSubTrack.FirstGroup; _trackRunner = new TrackRunner(connectionResolver, stGroup, false); GameObject go = Object.Instantiate(trainPrefab); _trackFollowingGO = new TrackFollowingGameObject(go, _trackRunner, Vector3.forward); }
public TrackFollowingGameObject(GameObject gameObject, TrackRunner trackRunner, Vector3 prefabForward) { GameObject = gameObject; _trackRunner = trackRunner; _prefabRotation = Quaternion.FromToRotation(prefabForward, Vector3.forward); AttachToCurrentGroup(); SetCurrentRotationAndPosition(); }
private void SpawnArrows(UpdateState gameState) { float time = gameState.Time; if (time - _arrowSpawnTimer < ArrowSpawnInterval) return; TrackRunner trackRunner = new TrackRunner(_connectionResolver, _junction.NextBranch, false); _arrows.Enqueue(new ArrowController(time, _arrowPrefab, trackRunner)); _arrowSpawnTimer += ArrowSpawnInterval; }