Exemple #1
0
    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);
        }
    }
Exemple #2
0
    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;
    }