// Update is called once per frame void Update() { #if UNITY_ANDROID || UNITY_IPHONE float v = JoystickControler.GetVerticalInput(); float h = JoystickControler.GetHorizontalInput(); #endif #if UNITY_STANDALONE_WIN float v = -Input.GetAxis("Vertical"); float h = Input.GetAxis("Horizontal"); #endif //限制车的最大速度,调整阻力可能不是最好的做法。但它很简单,而且不会干扰物理系统的运行。 m_Rigidbody.drag = m_Rigidbody.velocity.magnitude / 250; //通过两个轮子的平均rpm,计算引擎rpm,然后切换档位 EngineRPM = (FrontLeftWheel.rpm + FrontRightWheel.rpm) / 2 * GearRatio[CurrentGear]; ShiftGears(); //设置换档的声音 m_Audio.pitch = Mathf.Abs(EngineRPM / MaxEngineRPM) + 1.0f; if (m_Audio.pitch > 2.0) { m_Audio.pitch = 2.0f; if (!m_Audio.isPlaying) { m_Audio.Play(); } } //最后设置轮子转动力矩。引擎力矩除以当前档位,乘以用户输入值。 //轮子力矩提供一个汽车前进的力。轮子的转动又会提高档位。 BackLeftWheel.motorTorque = EngineTorgue / GearRatio[CurrentGear] * v; BackRightWheel.motorTorque = EngineTorgue / GearRatio[CurrentGear] * v; int a = (int)(GearRatio[CurrentGear] * FrontLeftWheel.rpm * 4); BackLeftWheel.transform.localEulerAngles += new Vector3(a, 0, 0); BackRightWheel.transform.localEulerAngles += new Vector3(a, 0, 0); //转动角度是任意数乘以用户输入值 FrontLeftWheel.steerAngle = wheelSpeed * h; FrontRightWheel.steerAngle = wheelSpeed * h; int b = (int)(GearRatio[CurrentGear] * FrontLeftWheel.rpm * 4); FrontLeftWheel.transform.localEulerAngles += new Vector3(b, 0, 0); FrontRightWheel.transform.localEulerAngles += new Vector3(b, 0, 0); }
IEnumerator StopLight() { yield return(new WaitForSeconds(1.1f)); //垂直 #if UNITY_ANDROID || UNITY_IPHONE float v = -JoystickControler.GetVerticalInput(); #endif #if UNITY_STANDALONE_WIN float v = -Input.GetAxis("Vertical"); #endif if (v < 0) { stopLight.SetActive(true); } else { stopLight.SetActive(false); } yield return(StopLight()); }