Никакой скачок значений в GetAxis для более плавной анимации UNITY3D

У меня есть вопрос, который мне интересно, если есть более простой способ решить.

Я использую Input.GetAxis(), например, скажем, горизонтальный.

Удержание D-> с помощью Input.GetAxis("Горизонтальное") приведет к постепенному изменению значения с 0 на 1. Отпускание D-> будет постепенно возвращать его к 0.

Вот моя проблема. Если я хочу удерживать D->, затем нажать A<- и отпустить D->, значение вместо постепенного снижения с 1 до 0, затем с 0 до -1, вместо этого мгновенно привязывается к 0 и постепенно понижается до -1,

Я использую это значение для управления своими анимациями, и это делает их безобразными. Есть ли способ сделать падение значения постепенно, как я намерен без большого кода, или я пропускаю некоторые настройки для аниматора?

1 ответ

Решение
    float tempADFloat = playerAnim.GetFloat("ADInput");

    if (_ADInput != 0)
    {
        playerAnim.SetFloat("ADInput", Mathf.Clamp(tempADFloat + 0.1f * _ADInput, -1f, 1f));

    } else
    {
        if ((tempADFloat < 0.2 && tempADFloat > -0.2))
        {
            playerAnim.SetFloat("ADInput", 0);

        } else if (tempADFloat < 0)
        {
            playerAnim.SetFloat("ADInput", tempADFloat + 0.1f);

        } else if (tempADFloat > 0)
        {
            playerAnim.SetFloat("ADInput", tempADFloat - 0.1f);
        }
    }

playerAnim - справочник аниматоров моих персонажей. Таким образом, анимации переходят плавно.

Я использую tempADFloat < 0.2 вместо tempADFloat < 0.1, потому что значение не может быть установлено и проверено вовремя. Это в основном будет в конечном итоге прыжки 0,1 до 0 назад и вперед

Другие вопросы по тегам