private float _angleOffset = 2f; // Used to spawn the Racer a bit ahead of the Checkpoint. public void SpawnInCheckpoint(Racer racer) { Checkpoint checkpoint = checkpointManager.GetCheckpoint(racer); if (checkpoint != null) { float angle = checkpoint.GetCheckpointAngle() + _angleOffset; Vector2 vector = VectorFromAngle(angle); var rigidbody = racer.GetComponent <Rigidbody2D>(); if (rigidbody != null) { rigidbody.velocity = Vector2.zero; } racer.transform.position = vector * CalculateDistanceToSpawnPoint(vector); } }
void SpawnPlayerCar() { Vector3 startPos = checkpoints_.GetStart() + Vector3.up; car_ = (GameObject)Instantiate(carPrefab_, startPos, Quaternion.identity); car_.GetComponent <Car>().Init(); carComponent_ = car_.GetComponent <Car>(); car_.GetComponent <Car>().ToggleControlled(); car_.GetComponent <Car>().Invoke("Start", 0.0f); car_.GetComponent <Vision>().enabled = false; car_.GetComponent <Personality>().enabled = false; car_.GetComponent <Error>().enabled = false; car_.GetComponent <Purpose>().enabled = false; car_.tag = "Player"; car_.transform.LookAt(checkpoints_.GetCheckpoint(1)); Vector3 carRotation = car_.transform.eulerAngles; carRotation.y = Mathf.Round(carRotation.y / 90) * 90; car_.transform.eulerAngles = carRotation; }