• У меня в Unity есть машина, когда я на ней разгоняюсь и резко торможу бывает такое что колеса досихпор крутятся только через какоето время останавливаются ну тоесть машина досихпор едет и только через какоето время остановливаются Код: using UnityEngine; public class CarController : MonoBehaviour { [SerializeField] private Transform _transformFL; [SerializeField] private Transform _transformFR; [SerializeField] private Transform _transformBL; [SerializeField] private Transform _transformBR; [SerializeField] private WheelCollider _colliderFL; [SerializeField] private WheelCollider _colliderFR; [SerializeField] private WheelCollider _colliderBL; [SerializeField] private WheelCollider _colliderBR; [SerializeField] private float _force; [SerializeField] private float _maxAngle; // Start is called before the first frame update private void FixedUpdate() { // Apply motor torque to all wheels // Check if the handbrake is being applied bool handbrake = Input.GetKey(KeyCode.Space); // If handbrake is applied, set motor torque to zero for the rear wheels and apply brake torque if (handbrake) { _colliderBL.motorTorque = 0f; _colliderBR.motorTorque = 0f; _colliderFL.brakeTorque = 3000f; _colliderFR.brakeTorque = 3000f; _colliderBL.brakeTorque = 3000f; _colliderBR.brakeTorque = 3000f; } else { // Apply motor torque to rear wheels if handbrake is not applied _colliderBL.motorTorque = Input.GetAxis("Vertical") * _force; _colliderBR.motorTorque = Input.GetAxis("Vertical") * _force; // Release brake torque on all wheels _colliderFL.brakeTorque = 0f; _colliderFR.brakeTorque = 0f; _colliderBL.brakeTorque = 0f; _colliderBR.brakeTorque = 0f; } // Apply steering angle to front wheels _colliderFL.steerAngle = _maxAngle * Input.GetAxis("Horizontal"); _colliderFR.steerAngle = _maxAngle * Input.GetAxis("Horizontal"); // Rotate all wheels RotateWheel(_colliderFL, _transformFL); RotateWheel(_colliderFR, _transformFR); RotateWheel(_colliderBL, _transformBL); RotateWheel(_colliderBR, _transformBR); } private void RotateWheel(WheelCollider collider, Transform transform) { Vector3 position; Quaternion rotation; collider.GetWorldPose(out position, out rotation); transform.rotation = rotation; transform.position = position; } }

Ответы 1

  • Проблема, описанная вами, говорит о продолжающемся движении машины после торможения. Проблема может быть связана с физическими свойствами колеса или с настройкой сцены в Unity.

    Возможно, проблема возникает из-за величины момента инерции, настройки физических материалов или других факторов.

    Я рекомендовал бы сначала убедиться, что физические свойства колес и поверхности настроены правильно. Ознакомьтесь с документацией Unity по физическим материалам и настройкам для колесных тел, чтобы убедиться, что все параметры настроены соответствующим образом.

    После этого стоит также обратить внимание на другие аспекты, такие как наличие скриптов или объектов, влияющих на движение автомобиля после торможения.

    Также важно убедиться, что вы используете последние версии Unity и ваши компоненты, такие как WheelCollider, настроены на правильную работу с этой версией движка.

    Если проблема все еще остается после этих шагов, может потребоваться более глубокое изучение логики вашего скрипта и настроек ваших колесных тел.

    • Автор:

      alyssaaisa
    • 11 месяцев назад
    • 9
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years