@Bruh_Bruh

Как сделать поворот плавнее?

Поворот при нажатии кнопки происходит мгновенно, что логично, но как сделать его плавным? Чтобы машина поворачивала не за один кадр, а за одну секунду? Вставить Time.deltaTime как 2-ой аргумент в метод в метод Rotate будет некорректно, так как тогда поворот просто будет маленьким, а не плавным.
public class CarMovement : MonoBehaviour
{ 
    public float speed;
    public float turnAngle;

    private void Update()
    {
        transform.Translate(Vector3.forward * speed * Time.deltaTime);

        if (Input.GetKeyDown(KeyCode.A))
        {
            CarTurnLeft();
        }
        else if (Input.GetKeyDown(KeyCode.D))
        {
            CarTurnRight();
        }
    }

    private void CarTurnRight()
    {
        transform.Rotate(Vector3.up, turnAngle);
    }

    private void CarTurnLeft()
    {
        transform.Rotate(Vector3.up, -turnAngle);
    }
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 2
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Думаю вам нужна переменная, например в диапазоне от -1 до 1 (по умолчанию 0). При удержании кнопки влево/вправо она будет уменьшаться или рости на нужную величину, чтобы через 1 секунду получился -1/1. А колеса буду поворачиваться на УГОЛ = УГОЛ_МАКС * ПЕРЕМЕННАЯ. При отпускании кнопки переменная должна так же (постепенно) возвращаться к нулю.
Ну и Time.deltaTime туда в рассчеты обязательно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы