Здравствуйте. Недавно я начал писать свою физику автомобиля с нуля в Unity, но столкнулся с одной проблемой и прошу вашей помощи. Дело в том, что, несмотря на то, что я прикладываю четверть силы трения от каждого колеса на автомобиль (0.25 * 4 = 1), силы трения не хватает, чтобы удержать его на месте при углах наклона дороги, отличных от нуля. Видео самой проблемы: RGhost (flv, 1.35mb) Код колеса:
if (Mathf.Approximately(load, 0f) || hit.collider == null) return;
var groundForward = Vector3.ProjectOnPlane(transform.parent.forward, hit.normal).normalized; var groundRight = Vector3.ProjectOnPlane(transform.parent.right, hit.normal).normalized;
var vel = (transform.position - prevPos) / deltaTime; prevPos = transform.position; var groundVel = Vector3.ProjectOnPlane(vel, hit.normal);
// Forward friction var forwardAccel = Vector3.zero;
Для души, да и настраивать поведение автомобиля легче, когда ты знаешь, как всё работает
Добавлено (04 Февраля 2019, 18:31) --------------------------------------------- Проблема заключалась в том, что Rigidbody.AddForce(...) добавляет силу не сразу, а, скорее всего, по окончанию FixedUpdate. В результате чего сила трения колеса рассчитывалась на основе предыдущих значений, что, соответственно, вызывало дрожание.