Скрипт для вставки анимаций на мод в First Person controller - Форум Игроделов
Сб, 04 Май 2024, 17:42 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Скрипт для вставки анимаций на мод в First Person controller (Скрипт для вставки анимаций на мод в First Person controller)
Скрипт для вставки анимаций на мод в 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
Форум Игроделов » UNITY3D » СКРИПТИНГ » Скрипт для вставки анимаций на мод в First Person controller (Скрипт для вставки анимаций на мод в First Person controller)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024