// Update is called once per frame //motorSpeed of 1000 = 2.66 m/s void Update() { if (command == "start") { //wheel.useMotor = false; timePassed += Time.deltaTime; //calculates how much time has passed since pod started moving vel = (float)((initialV + accel * timePassed) / conversionConst); //calculates the speed of the pod in every frame adjustedPose = (player.position[0] - initialPose) * conversionConst; //makes sure the speed is constant when brake speed is reached if (vel >= maxBrakeSpeed / conversionConst) { vel = (float)(maxBrakeSpeed / conversionConst); } //slows down pod after 50m mark if ((adjustedPose > 50) && !passedMid) { Debug.Log("Deccelerate"); passedMid = true; initialV = vel * conversionConst; accel = -2.78; timePassed = 0; } //Stops pod before it starts going backwards if (adjustedPose > 50 && vel <= 0) { vel = 0; } player.transform.Translate((float)vel * Time.deltaTime, 0, 0); //moves the pod in every frame uiText.text = (vel * conversionConst).ToString("F2") + " m/s"; //updates the speedometer every frame } // Every frame update, try to dequeque to see if there is any outstanding messages if (incoming_messages.TryDequeue(out var message)) { // Handle the messages here IncomingMessage serverMessage = new IncomingMessage(); serverMessage = IncomingMessage.ParseJSON(message); Debug.Log(serverMessage.data.param.brakeSpeed); Debug.Log(serverMessage.data.command); command = serverMessage.data.command; maxBrakeSpeed = serverMessage.data.param.brakeSpeed; accel = serverMessage.data.param.acceleration; //USE SWITCH STATEMENT TO UPDATE POD STATE BASE ON EVENT TYPE // START // STOP // RESET //wheel.useMotor = true; } }