示例#1
0
    void Update()
    {
        if (!error)
        {
            #region customizeInputsValues
            verticalInput   = autonomousObject.verticalVal / 255.0f;
            horizontalInput = autonomousObject.horizontalVal / 127.0f;
            #endregion

            vehicleCode = vehicles [currentVehicle].GetComponent <MSVehicleControllerFree> ();

            if (autonomousObject.reset)
            {
                SceneManager.LoadScene(sceneName);
                autonomousObject.reset = false;
            }
            controls.handBrakeAutonomous = autonomousObject.handbrake;
            pause = autonomousObject.pause;

            if (pause)
            {
                Time.timeScale = Mathf.Lerp(Time.timeScale, 0.0f, Time.fixedDeltaTime * 5.0f);
            }
            else
            {
                Time.timeScale = Mathf.Lerp(Time.timeScale, 1.0f, Time.fixedDeltaTime * 5.0f);
            }
        }
    }
示例#2
0
 // Use this for initialization
 void Start()
 {
     _socket = GameObject.Find("SocketIO").GetComponent <SocketIOComponent>();
     _socket.On("open", OnOpen);
     _socket.On("steer", OnSteer);
     _socket.On("manual", onManual);
     _carController = CarRemoteControl.GetComponent <MSVehicleControllerFree>();
 }
示例#3
0
 private void Start()
 {
     carController = vehicleController.CurrentVehicleControl;
     if (CheckWaypoints() && carController)
     {
         startRotation = carController.CachedTransform.rotation;
         AlignWaypointsRotation();
         RestartCar();
     }
 }
示例#4
0
 void EnableVehicle(int index)
 {
     currentVehicle = Mathf.Clamp(currentVehicle, 0, vehicles.Length - 1);
     if (index != currentVehicle)
     {
         if (vehicles [currentVehicle])
         {
             //change vehicle
             for (int x = 0; x < vehicles.Length; x++)
             {
                 vehicles [x].GetComponent <MSVehicleControllerFree> ().ExitTheVehicle();
             }
             vehicles [currentVehicle].GetComponent <MSVehicleControllerFree> ().EnterInVehicle();
             vehicleCode = vehicles [currentVehicle].GetComponent <MSVehicleControllerFree> ();
         }
     }
 }
示例#5
0
    void Update()
    {
        if (!vehicleCode.isSaving && !vehicleCode.IsRecording && saveRecording)
        {
            entrenar.color = Color.green;
            entrenar.text  = "Escrito en disco";
        }

        if (!error)
        {
            #region customizeInputsValues
            switch (selectControls)
            {
            case ControlTypeFree.mobileButton:
                if (buttonLeft && buttonRight)
                {
                    MSbuttonHorizontal = -buttonLeft.buttonInput + buttonRight.buttonInput;
                }
                if (buttonUp && buttonDown)
                {
                    MSbuttonVertical = -buttonDown.buttonInput + buttonUp.buttonInput;
                }
                if (joystickCamera)
                {
                    mouseXInput = joystickCamera.joystickHorizontal;
                    mouseYInput = joystickCamera.joystickVertical;
                }
                verticalInput         = MSbuttonVertical;
                horizontalInput       = MSbuttonHorizontal;
                mouseScrollWheelInput = Input.GetAxis(_mouseScrollWheelInput);
                break;

            case ControlTypeFree.windows:
                verticalInput         = Input.GetAxis(_verticalInput);
                horizontalInput       = Input.GetAxis(_horizontalInput);
                mouseXInput           = Input.GetAxis(_mouseXInput);
                mouseYInput           = Input.GetAxis(_mouseYInput);
                mouseScrollWheelInput = Input.GetAxis(_mouseScrollWheelInput);
                break;
            }
            #endregion

            vehicleCode = vehicles [currentVehicle].GetComponent <MSVehicleControllerFree> ();
            EnableOrDisableButtons(vehicleCode.isInsideTheCar);

            if (Input.GetKeyDown(controls.reloadScene) && controls.enable_reloadScene_Input)
            {
                SceneManager.LoadScene(sceneName);
            }

            if (Input.GetKeyDown(controls.pause) && controls.enable_pause_Input)
            {
                pause = !pause;
            }
            if (pause)
            {
                Time.timeScale = Mathf.Lerp(Time.timeScale, 0.0f, Time.fixedDeltaTime * 5.0f);
            }
            else
            {
                Time.timeScale = Mathf.Lerp(Time.timeScale, 1.0f, Time.fixedDeltaTime * 5.0f);
            }

            if ((Input.GetKeyDown(controls.enterEndExit) || enterAndExitBool) && !blockedInteraction && player && controls.enable_enterEndExit_Input)
            {
                if (vehicles.Length <= 1)
                {
                    if (vehicleCode.isInsideTheCar)
                    {
                        vehicleCode.ExitTheVehicle();
                        if (player)
                        {
                            player.SetActive(true);
                            if (vehicleCode.doorPosition[0].transform.position != vehicles [currentVehicle].transform.position)
                            {
                                player.transform.position = vehicleCode.doorPosition[0].transform.position;
                            }
                            else
                            {
                                player.transform.position = vehicleCode.doorPosition[0].transform.position + Vector3.up * 3.0f;
                            }
                        }
                        blockedInteraction = true;
                        enterAndExitBool   = false;
                        StartCoroutine("WaitToInteract");
                    }
                    else
                    {
                        currentDistanceTemp = Vector3.Distance(player.transform.position, vehicleCode.doorPosition[0].transform.position);
                        for (int x = 0; x < vehicleCode.doorPosition.Length; x++)
                        {
                            proximityDistanceTemp = Vector3.Distance(player.transform.position, vehicleCode.doorPosition [x].transform.position);
                            if (proximityDistanceTemp < currentDistanceTemp)
                            {
                                currentDistanceTemp = proximityDistanceTemp;
                            }
                        }
                        if (currentDistanceTemp < minDistance)
                        {
                            vehicleCode.EnterInVehicle();
                            if (player)
                            {
                                player.SetActive(false);
                            }
                            blockedInteraction = true;
                            enterAndExitBool   = false;
                            StartCoroutine("WaitToInteract");
                        }
                        else
                        {
                            enterAndExitBool = false;
                        }
                    }
                }
                else
                {
                    proximityObjectIndex = 0;
                    proximityDoorIndex   = 0;
                    for (int x = 0; x < vehicles.Length; x++)
                    {
                        controllerTemp = vehicles [x].GetComponent <MSVehicleControllerFree> ();

                        for (int y = 0; y < controllerTemp.doorPosition.Length; y++)
                        {
                            currentDistanceTemp   = Vector3.Distance(player.transform.position, controllerTemp.doorPosition[y].transform.position);
                            proximityDistanceTemp = Vector3.Distance(player.transform.position, vehicles [proximityObjectIndex].GetComponent <MSVehicleControllerFree> ().doorPosition[proximityDoorIndex].transform.position);
                            if (currentDistanceTemp < proximityDistanceTemp)
                            {
                                proximityObjectIndex = x;
                                proximityDoorIndex   = y;
                            }
                        }
                    }

                    if (vehicleCode.isInsideTheCar)
                    {
                        vehicleCode.ExitTheVehicle();
                        if (player)
                        {
                            player.SetActive(true);
                            if (vehicleCode.doorPosition[0].transform.position != vehicles [currentVehicle].transform.position)
                            {
                                player.transform.position = vehicleCode.doorPosition[0].transform.position;
                            }
                            else
                            {
                                player.transform.position = vehicleCode.doorPosition[0].transform.position + Vector3.up * 3.0f;
                            }
                        }
                        blockedInteraction = true;
                        enterAndExitBool   = false;
                        StartCoroutine("WaitToInteract");
                    }
                    else
                    {
                        controllerTemp        = vehicles [proximityObjectIndex].GetComponent <MSVehicleControllerFree> ();
                        proximityDistanceTemp = Vector3.Distance(player.transform.position, controllerTemp.doorPosition[0].transform.position);
                        for (int x = 0; x < controllerTemp.doorPosition.Length; x++)
                        {
                            currentDistanceTemp = Vector3.Distance(player.transform.position, controllerTemp.doorPosition [x].transform.position);
                            if (currentDistanceTemp < proximityDistanceTemp)
                            {
                                proximityDistanceTemp = currentDistanceTemp;
                            }
                        }
                        if (proximityDistanceTemp < minDistance)
                        {
                            currentVehicle = proximityObjectIndex;
                            vehicles [currentVehicle].GetComponent <MSVehicleControllerFree> ().EnterInVehicle();
                            if (player)
                            {
                                player.SetActive(false);
                            }
                            blockedInteraction = true;
                            enterAndExitBool   = false;
                            StartCoroutine("WaitToInteract");
                        }
                        else
                        {
                            enterAndExitBool = false;
                        }
                    }
                }
            }
            //
            if (!playerIsNull)
            {
                if (player.gameObject.activeInHierarchy)
                {
                    EnableUI(false);
                }
                else
                {
                    EnableUI(UIVisualizer);
                }
            }
            else
            {
                EnableUI(UIVisualizer);
            }
            //
            if (vehicles.Length > 0 && currentVehicle < vehicles.Length && UIVisualizer && vehicleCode)
            {
                if (vehicleCode.isInsideTheCar)
                {
                    clampGear = Mathf.Clamp(vehicleCode.currentGear, -1, 1);
                    if (clampGear == 0)
                    {
                        clampGear = 1;
                    }


                    kmhText.text    = "Velocidad: " + (int)(vehicleCode.KMh * clampGear) + " kmh";
                    volantText.text = "Volante: " + (int)(vehicleCode.angleRefVolant) + " º";
                }
            }
        }
    }
示例#6
0
    void Awake()
    {
        error = false;
        CheckEqualKeyCodes();
        MSSceneControllerFree[] sceneControllers = FindObjectsOfType(typeof(MSSceneControllerFree)) as MSSceneControllerFree[];
        if (sceneControllers.Length > 1)
        {
            Debug.LogError("Only one controller is allowed per scene, otherwise the controllers would conflict with each other.");
            error = true;
            for (int x = 0; x < sceneControllers.Length; x++)
            {
                sceneControllers [x].gameObject.SetActive(false);
            }
        }
        if (startingVehicle >= vehicles.Length)
        {
            error = true;
            Debug.LogError("Vehicle selected to start does not exist in the 'vehicles' list");
        }
        if (vehicles.Length == 0)
        {
            error = true;
            Debug.LogError("There is no vehicle in the scene or no vehicle has been associated with the controller.");
        }
        for (int x = 0; x < vehicles.Length; x++)
        {
            if (vehicles [x])
            {
                if (!vehicles [x].GetComponent <MSVehicleControllerFree> ())
                {
                    error = true;
                    Debug.LogError("The vehicle associated with the index " + x + " does not have the 'MSVehicleController' component. So it will be disabled.");
                }
            }
            else
            {
                error = true;
                Debug.LogError("No vehicle was associated with the index " + x + " of the vehicle list.");
            }
        }
        if (error)
        {
            for (int x = 0; x < vehicles.Length; x++)
            {
                if (vehicles [x])
                {
                    MSVehicleControllerFree component = vehicles [x].GetComponent <MSVehicleControllerFree> ();
                    if (component)
                    {
                        component.disableVehicle = true;
                    }
                    vehicles [x].SetActive(false);
                }
            }
            return;
        }
        else
        {
            //UI transform.find
            cameraMobileButton = transform.Find("Canvas/ChangeCamerasB").GetComponent <Button> ();
            enterAndExitButton = transform.Find("Canvas/EnterAndExitB").GetComponent <Button> ();

            buttonLeft     = transform.Find("Canvas/MSButtonLeft").GetComponent <MSButtonFree> ();
            buttonRight    = transform.Find("Canvas/MSButtonRight").GetComponent <MSButtonFree> ();
            buttonUp       = transform.Find("Canvas/MSButtonUp").GetComponent <MSButtonFree> ();
            buttonDown     = transform.Find("Canvas/MSButtonDown").GetComponent <MSButtonFree> ();
            joystickCamera = transform.Find("Canvas/MSJoystickCamera").GetComponent <JoystickFree> ();



            kmhText = transform.Find("Canvas/Strings/kmhText").GetComponent <Text> ();
            if (Application.loadedLevelName == "SimuladorJaviXue")
            {
                Boton    = transform.Find("Canvas/ButtonRecord/Text").GetComponent <Text> ();
                entrenar = transform.Find("Canvas/Strings/entrenar").GetComponent <Text> ();
            }
            volantText = transform.Find("Canvas/Strings/volantText").GetComponent <Text> ();

            backGround = transform.Find("Canvas/Strings").GetComponent <Image> ();
            //end transform.find

            if (nextVehicle)
            {
                nextVehicle.onClick = new Button.ButtonClickedEvent();
                nextVehicle.onClick.AddListener(() => NextVehicle());
            }
            if (previousVehicle)
            {
                previousVehicle.onClick = new Button.ButtonClickedEvent();
                previousVehicle.onClick.AddListener(() => PreviousVehicle());
            }

            if (cameraMobileButton)
            {
                cameraMobileButton.onClick = new Button.ButtonClickedEvent();
                cameraMobileButton.onClick.AddListener(() => Mobile_CameraInput());
            }
            if (enterAndExitButton)
            {
                enterAndExitButton.onClick = new Button.ButtonClickedEvent();
                enterAndExitButton.onClick.AddListener(() => Mobile_EnterAndExitVehicle());
            }

            vehicleCode = vehicles [currentVehicle].GetComponent <MSVehicleControllerFree> ();
            EnableOrDisableButtons(vehicleCode.isInsideTheCar);

            Time.timeScale   = 1;
            enterAndExitBool = false;
            sceneName        = SceneManager.GetActiveScene().name;
            currentVehicle   = startingVehicle;
            //
            for (int x = 0; x < vehicles.Length; x++)
            {
                if (vehicles [x])
                {
                    vehicles [x].GetComponent <MSVehicleControllerFree> ().isInsideTheCar = false;
                }
            }
            playerIsNull = false;
            if (player)
            {
                player.SetActive(false);
            }
            else
            {
                playerIsNull = true;
            }
            if (startInPlayer)
            {
                if (player)
                {
                    player.SetActive(true);
                }
                else
                {
                    startInPlayer = false;
                    if (vehicles.Length > startingVehicle && vehicles [currentVehicle])
                    {
                        vehicles [startingVehicle].GetComponent <MSVehicleControllerFree> ().isInsideTheCar = true;
                    }
                }
            }
            else
            {
                if (vehicles.Length > startingVehicle && vehicles [currentVehicle])
                {
                    vehicles [startingVehicle].GetComponent <MSVehicleControllerFree> ().isInsideTheCar = true;
                }
            }
        }
    }
示例#7
0
 void SelectVehicle()
 {
     vehicleCode           = vehicles[currentVehicle].GetComponent <MSVehicleControllerFree>();
     CurrentVehicleControl = vehicleCode;
 }
示例#8
0
 private void Awake()
 {
     // get the car controller
     m_Car = GetComponent <MSVehicleControllerFree>();
 }
示例#9
0
    void Awake()
    {
        error = false;
        CheckEqualKeyCodes();
        autonomousObject = GameObject.Find("/Autonomous").GetComponent <AutonomousScript>();
        MSSceneControllerFree[] sceneControllers = FindObjectsOfType(typeof(MSSceneControllerFree)) as MSSceneControllerFree[];
        if (sceneControllers.Length > 1)
        {
            Debug.LogError("Only one controller is allowed per scene, otherwise the controllers would conflict with each other.");
            error = true;
            for (int x = 0; x < sceneControllers.Length; x++)
            {
                sceneControllers [x].gameObject.SetActive(false);
            }
        }
        if (startingVehicle >= vehicles.Length)
        {
            error = true;
            Debug.LogError("Vehicle selected to start does not exist in the 'vehicles' list");
        }
        if (vehicles.Length == 0)
        {
            error = true;
            Debug.LogError("There is no vehicle in the scene or no vehicle has been associated with the controller.");
        }
        for (int x = 0; x < vehicles.Length; x++)
        {
            if (vehicles [x])
            {
                if (!vehicles [x].GetComponent <MSVehicleControllerFree> ())
                {
                    error = true;
                    Debug.LogError("The vehicle associated with the index " + x + " does not have the 'MSVehicleController' component. So it will be disabled.");
                }
            }
            else
            {
                error = true;
                Debug.LogError("No vehicle was associated with the index " + x + " of the vehicle list.");
            }
        }
        if (error)
        {
            for (int x = 0; x < vehicles.Length; x++)
            {
                if (vehicles [x])
                {
                    MSVehicleControllerFree component = vehicles [x].GetComponent <MSVehicleControllerFree> ();
                    if (component)
                    {
                        component.disableVehicle = true;
                    }
                    vehicles [x].SetActive(false);
                }
            }
            return;
        }
        else
        {
            vehicleCode = vehicles [currentVehicle].GetComponent <MSVehicleControllerFree> ();

            Time.timeScale = 1;
            sceneName      = SceneManager.GetActiveScene().name;
            currentVehicle = startingVehicle;
            //
            for (int x = 0; x < vehicles.Length; x++)
            {
                if (vehicles [x])
                {
                    vehicles [x].GetComponent <MSVehicleControllerFree> ().isInsideTheCar = false;
                }
            }
            if (vehicles.Length > startingVehicle && vehicles [currentVehicle])
            {
                vehicles [startingVehicle].GetComponent <MSVehicleControllerFree> ().isInsideTheCar = true;
            }
        }
    }