Никакой скачок значений в 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 назад и вперед