Скрипт для вставки анимаций на мод в First Person controller
bugatti01 Дата: Ср, 25 Сен 2013, 22:35 | Сообщение # 1
Сообщений: 9
Награды:
0
Репутация:
0
Статус: Offline
Помогите разобраться что тут не так ставлю кодик но работает только одна анимация много раз переписывал по разному, но то работает одна то вообще не работают а вот и код Код
var walkAnim : AnimationClip; var walkAnimA : AnimationClip; var walkAnimD : AnimationClip; function Start () { animation.AddClip(walkAnim,"walking"); animation.AddClip(walkAnimA,"obla"); animation.AddClip(walkAnimD,"obla"); } function Update () { if(Input.GetKey(KeyCode.W)) { animation.CrossFade("walking"); } else{ animation.Play("stoit"); } if(Input.GetKey(KeyCode.A)) { animation.CrossFade("obla"); } else{ animation.Play("stoit"); } if(Input.GetKey(KeyCode.D)) { animation.CrossFade("obla"); } else{ animation.Play("stoit"); } }
расшифрую смысл по нажатию кнопки активируется анимация назначенная в условии, иначе если кнопку отпускаем активируется анимация бездействия игрока
...тот кто ищет тот всегда найдёт...
Сообщение Помогите разобраться что тут не так ставлю кодик но работает только одна анимация много раз переписывал по разному, но то работает одна то вообще не работают а вот и код Код
var walkAnim : AnimationClip; var walkAnimA : AnimationClip; var walkAnimD : AnimationClip; function Start () { animation.AddClip(walkAnim,"walking"); animation.AddClip(walkAnimA,"obla"); animation.AddClip(walkAnimD,"obla"); } function Update () { if(Input.GetKey(KeyCode.W)) { animation.CrossFade("walking"); } else{ animation.Play("stoit"); } if(Input.GetKey(KeyCode.A)) { animation.CrossFade("obla"); } else{ animation.Play("stoit"); } if(Input.GetKey(KeyCode.D)) { animation.CrossFade("obla"); } else{ animation.Play("stoit"); } }
расшифрую смысл по нажатию кнопки активируется анимация назначенная в условии, иначе если кнопку отпускаем активируется анимация бездействия игрока Автор - bugatti01 Дата добавления - 25 Сен 2013 в 22:35
seaman Дата: Ср, 25 Сен 2013, 23:32 | Сообщение # 2
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Вы каждый кадр пытаетесь запустить анимацию. Нужно запускать один раз при нажатии кнопки. Вывод?- используйте GetKeyDown
Сообщение Вы каждый кадр пытаетесь запустить анимацию. Нужно запускать один раз при нажатии кнопки. Вывод?- используйте GetKeyDown Автор - seaman Дата добавления - 25 Сен 2013 в 23:32
bugatti01 Дата: Ср, 25 Сен 2013, 23:47 | Сообщение # 3
Сообщений: 9
Награды:
0
Репутация:
0
Статус: Offline
Хм странно я заметил такую вот штукенцию Код
else{ animation.Play("stoit"); }
как только я ставлю это условие, то и работает только оно почему то может код как то по другому надо написать ?
...тот кто ищет тот всегда найдёт...
Сообщение отредактировал bugatti01 - Ср, 25 Сен 2013, 23:48
Сообщение Хм странно я заметил такую вот штукенцию Код
else{ animation.Play("stoit"); }
как только я ставлю это условие, то и работает только оно почему то может код как то по другому надо написать ? Автор - bugatti01 Дата добавления - 25 Сен 2013 в 23:47
seaman Дата: Чт, 26 Сен 2013, 01:00 | Сообщение # 4
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Вы читать умеете?
Сообщение Вы читать умеете? Автор - seaman Дата добавления - 26 Сен 2013 в 01:00
bugatti01 Дата: Чт, 26 Сен 2013, 15:46 | Сообщение # 5
Сообщений: 9
Награды:
0
Репутация:
0
Статус: Offline
если должно выйти так то результат тот же Код
var walkAnim : AnimationClip; var walkAnimA : AnimationClip; var walkAnimD : AnimationClip; function Start () { animation.AddClip(walkAnim,"walking"); animation.AddClip(walkAnimA,"obla"); animation.AddClip(walkAnimD,"obla"); } function Update () { if(Input.GetKeyDown(KeyCode.W)) { animation.CrossFade("walking"); } else{ animation.Play("stoit"); } if(Input.GetKeyDown(KeyCode.A)) { animation.CrossFade("obla"); } else{ animation.Play("stoit"); } if(Input.GetKeyDown(KeyCode.D)) { animation.CrossFade("obla"); } else{ animation.Play("stoit"); } }
если как то по другому то объясните пожалуйста
...тот кто ищет тот всегда найдёт...
Сообщение если должно выйти так то результат тот же Код
var walkAnim : AnimationClip; var walkAnimA : AnimationClip; var walkAnimD : AnimationClip; function Start () { animation.AddClip(walkAnim,"walking"); animation.AddClip(walkAnimA,"obla"); animation.AddClip(walkAnimD,"obla"); } function Update () { if(Input.GetKeyDown(KeyCode.W)) { animation.CrossFade("walking"); } else{ animation.Play("stoit"); } if(Input.GetKeyDown(KeyCode.A)) { animation.CrossFade("obla"); } else{ animation.Play("stoit"); } if(Input.GetKeyDown(KeyCode.D)) { animation.CrossFade("obla"); } else{ animation.Play("stoit"); } }
если как то по другому то объясните пожалуйста Автор - bugatti01 Дата добавления - 26 Сен 2013 в 15:46
seaman Дата: Чт, 26 Сен 2013, 16:45 | Сообщение # 6
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Жуть. Логически подумайте. Update вызывается каждый кадр. Каждый кадр вы проверяете - нажата ли в данном кадре клавиша. Если нажата - запускаете соответствующую анимацию. До сих пор все верно. Однако если в данном кадре Вы клавишу не нажали - Вы запускаете анимацию stay. Получается в каком-то кадре Вы нажали клавишу - Вы запустите нужную анимацию. В следующем кадре клавиша уже нажата и Вы никак не можете получить еще раз то же самое нажатие. Следовательно в следующем кадре Вы запустите Stay. Получается что любая Ваша анимация работает только один кадр. ___________________ Как исправить? Запускать stay не тогда когда нажимаете клавишу, а когда отпускаете. Т.е. изучить GetKeyUp
Сообщение Жуть. Логически подумайте. Update вызывается каждый кадр. Каждый кадр вы проверяете - нажата ли в данном кадре клавиша. Если нажата - запускаете соответствующую анимацию. До сих пор все верно. Однако если в данном кадре Вы клавишу не нажали - Вы запускаете анимацию stay. Получается в каком-то кадре Вы нажали клавишу - Вы запустите нужную анимацию. В следующем кадре клавиша уже нажата и Вы никак не можете получить еще раз то же самое нажатие. Следовательно в следующем кадре Вы запустите Stay. Получается что любая Ваша анимация работает только один кадр. ___________________ Как исправить? Запускать stay не тогда когда нажимаете клавишу, а когда отпускаете. Т.е. изучить GetKeyUp Автор - seaman Дата добавления - 26 Сен 2013 в 16:45
bugatti01 Дата: Чт, 26 Сен 2013, 17:27 | Сообщение # 7
Сообщений: 9
Награды:
0
Репутация:
0
Статус: Offline
хм попробую разобраться хотя я так запутался что уже ничего не понимаю ...
...тот кто ищет тот всегда найдёт...
Сообщение хм попробую разобраться хотя я так запутался что уже ничего не понимаю ... Автор - bugatti01 Дата добавления - 26 Сен 2013 в 17:27
Левша Дата: Чт, 26 Сен 2013, 17:36 | Сообщение # 8
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Цитата (bugatti01 )
я так запутался что уже ничего не понимаю
Код
function Update () { if(Input.GetKeyDown(KeyCode.W)) { animation.CrossFade("walking"); } if(Input.GetKeyUp(KeyCode.W)) { animation.Play("stoit"); } }
Так понятно ?
X.cor.R (Prologue)
Сообщение Цитата (bugatti01 )
я так запутался что уже ничего не понимаю
Код
function Update () { if(Input.GetKeyDown(KeyCode.W)) { animation.CrossFade("walking"); } if(Input.GetKeyUp(KeyCode.W)) { animation.Play("stoit"); } }
Так понятно ?Автор - Левша Дата добавления - 26 Сен 2013 в 17:36
bugatti01 Дата: Чт, 26 Сен 2013, 17:43 | Сообщение # 9
Сообщений: 9
Награды:
0
Репутация:
0
Статус: Offline
Левша и seaman спасибо вам большое
...тот кто ищет тот всегда найдёт...
Сообщение Левша и seaman спасибо вам большое Автор - bugatti01 Дата добавления - 26 Сен 2013 в 17:43