Beispiel #1
0
    private void Awake()
    {
        car = container.InstantiatePrefab(carPrefab).GetComponent <CarController>();
        container.Bind <CarController>().FromInstance(car).AsSingle();
        signalBus.Subscribe <OnCheckpointAchievedSignal>(x =>
        {
            if (levelEnded)
            {
                return;
            }

            if (x.CheckPoint.Index == nextCheckpoint)
            {
                x.CheckPoint.Close();
                nextCheckpoint++;
                signalBus.Fire <OnTakeCheckpointSignal>();
                if (nextCheckpoint + 1 < checkPoints.Count)
                {
                    checkPoints[nextCheckpoint].ShowStraight();
                    checkPoints[nextCheckpoint + 1].Show();
                    cameraManager.RemoveTarget(checkPoints[nextCheckpoint - 1].transform);
                    cameraManager.AddTarget(checkPoints[nextCheckpoint + 1].transform);
                }
                else
                {
                    if (nextCheckpoint + 1 == checkPoints.Count)
                    {
                        finish.Show();
                        checkPoints[nextCheckpoint].ShowStraight();
                        cameraManager.RemoveTarget(checkPoints[nextCheckpoint - 1].transform);
                        cameraManager.AddTarget(finish.transform);
                    }
                    else
                    {
                        cameraManager.RemoveTarget(checkPoints[nextCheckpoint - 1].transform);
                    }
                }
            }
            else
            {
                signalBus.Fire <OnLoseCheckpointSignal>();
            }
        });
        signalBus.Subscribe <OnFinishAchievedSignal>(() =>
        {
            if (levelEnded)
            {
                return;
            }
            if (nextCheckpoint == checkPoints.Count)
            {
                signalBus.Fire <OnLevelFinishedSignal>();
            }
            else
            {
                signalBus.Fire <OnLoseCheckpointSignal>();
            }
        });
        signalBus.Subscribe <OnLevelFailedSignal>(() =>
        {
            levelEnded = true;
            car.TakeControl();
        });
        signalBus.Subscribe <OnLevelFinishedSignal>(() =>
        {
            levelEnded = true;
            car.TakeControl();
        });
    }