Друзья, привет. Такой вопрос:
Input.GetAxis(Horizontal) при нажатии кнопок "A" и "D" Возвращает значение от -1(влево) до 1(вправо) - это значение сохраним в переменную z. Тоже самое и с Input.GetAxis("Vertical") - переменная x.
Мне нужно просчитать скорость движения игрока от 0 (стоит) , до 1(бежит на максимальную скорость). Я делаю вот так:
speed = Mathf.Abs(z+x);
Проблемы:
1) Когда я двигаюсь по диагоналям, то значение speed равно 2, так как х = 1 и z = 1. Помогите написать правильную формулу, где 1 - максимальная скорость, 0.5 - половина, а 0 - обьект стоит.
2) Когда я быстро меняю вектор направления на противоположный, к примеру бегу вверх, а потом резко вниз, то значение x плавно меняется от 1 до -1, при этом есть момент, в котором значение x равно 0. Аниматор этого обьекта зависит от значения переменной speed и когда значение speed равно 0, проигрывается анимация idle, чего происходить не должно, так как я просто изменил вектор движения. Подскажите, может кто-то сталкивался, спасибо.