Машина едет не так, как хотелось бы

Машина в Юнити (3D под андроид) при управлении джойстиком двигается вперед хорошо, но назад - только в том случае, если скорость движения вперед уменьшается до 0, при отрицательных значениях снова начинает двигаться вперед. Менял upDownMove на отрицательное значение, не помогло, саму скорость минусовал - ещё хуже. В Гугле всё обшарил. Помогите, пожалуйста.

void Update()
{
    upDownMove = joystick.Direction.y;
    rightLeftMove = joystick.Direction.x;

    transform.position += new Vector3((joystick.Direction.y * speed * Time.deltaTime), 0, -(joystick.Direction.x * speedRightLeft * Time.deltaTime));
 
    if (upDownMove == 0)
    {
        transform.position += new Vector3((speed * Time.deltaTime), 0, -(joystick.Direction.x * speedRightLeft * Time.deltaTime));
    }

    if (upDownMove != 0)
    {
        speed += 0.1f * upDownMove;
        if (speed >= maxSpeed)
        {
            speed = maxSpeed;
        } 
    }
    else
    {
        if (speed > 0)
        {
            speed -= 1f;
            if (speed < 0)
            {
                speed = 0f;
            }
        }
        else
        {
            speed += 1f;
            if (speed > 0)
            {
                speed = 0f;
            }
        }
    }
}

}


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

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

Смотри. У тебя позиция машинки задаётся через transform - так лучше не делать. Разбей машинку на корпус и колёса. К корпусу колёса присоедени через WheelJoint Затем на корпус повесь скрипт, который будет управлять ими, в нём сделай два массива с колёсами(или четыре объекта - по каждому на колесо, но через массив удобнее) один из которых будет отвечать за рулевые колёса, а другой за задние колёса. Как реализовывать их вращение, почитай здесь - https://ru.stackoverflow.com/questions/936026/Правильная-реализация-передвижения-персонажа

В итоге получится вполне достоверная машина.

→ Ссылка