ИИ машины для дрифта Unity3D

Не получается научить ИИ машины дрифту. Менял сопротивление колес при заносе, пытался учитывать вектор инерции при повороте, в итоге пришел к тому, с чего начал. Машина просто уходит на скорости в занос и все.

Код расчета угла поворота

private void ApplySteer()
{
    //нахождения вектора движения к точке
    Vector3 relativeVector = transform.InverseTransformPoint(point[currectNode].transform.position);
    //расчет угла поворота передних колес
    float newSteer = (relativeVector.x / relativeVector.magnitude) * maxSteerAngle;
    wheelFL.steerAngle = newSteer;
    wheelFR.steerAngle = newSteer;
}

Код движения автомобиля

private void Drive()
{
    //крутящий момент передних колес 
    wheelFL.motorTorque = maxMotorTorque;
    wheelFR.motorTorque = maxMotorTorque;

    if(driftAngle <= 7f)
    {
        //крутящий момент задних колес вне время дрифта
        wheelBL.motorTorque = maxMotorTorque;
        wheelBR.motorTorque = maxMotorTorque;
        //боковое сопротивление задних колес вне время дрифта
        WheelFrictionCurve myWfc;
        myWfc = wheelBL.sidewaysFriction;
        myWfc.extremumSlip = 0.2f;
        wheelBL.sidewaysFriction = myWfc;
        wheelBR.sidewaysFriction = myWfc;
    }
    else
    {
        //крутящий момент задних колес во время дрифта
        wheelBL.motorTorque = maxMotorTorque * 2;
        wheelBR.motorTorque = maxMotorTorque * 2;
        //боковое сопротивление задних колес во время дрифта
        WheelFrictionCurve myWfc;
        myWfc = wheelBL.sidewaysFriction;
        myWfc.extremumSlip = 0.9f;
        wheelBL.sidewaysFriction = myWfc;
        wheelBR.sidewaysFriction = myWfc;
    }
    
}

Машина едет по заданной траектории, набирает скорость

Поворачивает

И просто улетает по инерции


Ответы (1 шт):

Автор решения: dreamboy

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

→ Ссылка