Есть 2Д персонаж со спрайтовой анимацией. При нажатии на клавишу персонаж движется, соответственно анимация проигрывается, но когда клавиша отпускается, анимация не останавливается, пока не доиграется до конца. GetComponent().enabled = false и GetComponent().speed = 0, как я понял, останавливают анимацию на текущем кадре, а нужно её остановить и вернуть к начальному кадру. Кто нибудь может помочь?
Сделайте в аниматоре состояния. К примеру Idle и Move.
Добавьте в аниматор параметры и задайте эти параметры для перехода между состояниями.
Параметры меняйте из скрипта.
Segan454 верно вам тут советуют. по правильному (чуть сложнее в изучении и настроике может , если не делали) через аниматор такое делать. контроллер анимаций персонажа. бег, ходьба, прыжки, стрельбы. Переходы между ними. Смешивание через blendTree и тд тп.
В итоге вам будет куда удобнее.
ну а так кроме speed и enabled - аничмацию можно просто ручками выставить в нужный ключ/кадр
в случае если "вернуть к начальному кадру" это не проиграть в обратную сторону. то вместо скорости ноль - можно просто выставить анимации кадр 0. и проиграть Sample().
animation["MyAnimation"].time =0.0f;
// animation["MyAnimation"].speed = 0.0;
//animation.Play("MyAnimation");
animation.Sample(); //forces the pose to be calculated