Скрипты и Анимация.

Программирование на Юнити.

Скрипты и Анимация.

Сообщение Левш@ 11 май 2010, 21:37

Есть скрипт:

Код: Выделить всё
var wL : AnimationClip;
var wR : AnimationClip;
var rL : AnimationClip;
var rR : AnimationClip;
private var head = 1;


function LateUpdate () {
  if (Input.GetButton ("WalkF") || Input.GetButton ("WalkD") || Input.GetButton ("WalkS"))  {   
   if (head == 1)
    HeadL ();
   if (head == 2)
    HeadR ();
    }
}

function HeadL ()   {
   if (Input.GetButton ("Run"))
     animation.clip = rL;
   else
    animation.clip = wL;
    animation.Play();
     yield WaitForSeconds (animation.clip.length);
    head = 2;
}

function HeadR ()   {
   if (Input.GetButton ("Run"))
     animation.clip = rR;
   else
    animation.clip = wR;
    animation.Play();
     yield WaitForSeconds (animation.clip.length);
    head = 1;
}

Есть два анимированных куба, так на одном кубе этот скрипт работает а на другом нет...
На одном анимация проигрываеться, на другом нет... как это может быть?
Кубы практически одинаковые и анимированы одинаково, вся разница в том, что один поднят в максе на 5 единиц, а второй на нулевом уровне.
Два дня мучаюсь, не понял в чем дело, чертовщина какаято...ошибок в скрипте вроде не вижу, да и на одном из кубов все работает...
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Скрипты и Анимация.

Сообщение Левш@ 12 май 2010, 18:54

Теперь еще интереснее...
Ни стого ни с сего на следующий день второй куб заработал! Я было обрадовался, но рано...
Теперь в редакторе все работает, а в скомпиленой игре хрен... второй куб снова не двигаеться.
Я дуб или Unity глючит??? :-?
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Скрипты и Анимация.

Сообщение Neodrop 12 май 2010, 18:55

Наeчитесь использовать тег syntax

Никаких глюков. Очерёдность выполнения скриптов полностью на вашей совести. Просто в один раз у вас один первым срабатывает, а в другой раз - другой.

А, не, я малость невнимательно прочитал вопрос. (тем не менее, написанное выше, верно, просто малость не по теме).

Скорее всего это от того, что у вас коратины перезапускаются в каждом кадре. Некорректное использование yield.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Скрипты и Анимация.

Сообщение Левш@ 12 май 2010, 19:07

При беглом взгляде всё вроде нормально.

Оно не может быть не нормально, потому что на одном из кубов работает и в тесте и в скомпиленом ехе.
Кубя совершенно одинаковы, одинаково проанимированы, скрипты на них висят тоже одинаковые.
Единственная разница между ними в том один из них сдвинут вверх по вертикали на 5 единиц. (уверен что это никак влиять не может).
Самое интересное что сперва оба куба работать одновременно отказались, работал только один, который повыше стоит.
Потом в редакторе ничего не меняя после перезапуска второй куб заработал, но в скомпиленной игре он снова перестал работать.

2. Проблема - строчка:
Код: Выделить всё
Screen.showCursor = false;

Отказываеться вырубать курсор, как был так и остался... вернее в редакторе стал мерцать, а в скомпиленной игре даже не мерцает, просто есть.
:(

у вас коратины перезапускаются в каждом кадре. Некорректное использование yield.

А как корректно? Вроде в мануале ничего нет про это...
Да но на оружии например анимация работает нормально а код такой же и тоже одновременно с кубом и тоже в каждом кадре ?
Последний раз редактировалось Левш@ 12 май 2010, 19:10, всего редактировалось 1 раз.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Скрипты и Анимация.

Сообщение Neodrop 12 май 2010, 19:09

Я ещё раз повторяю - код кривой и некорректный. Он вообще принципиально так, как вы желаете, работать не будет.
А уж почему на только одном отрубается вовсе, а не на обоих.. Не знаю. :D
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Скрипты и Анимация.

Сообщение Neodrop 12 май 2010, 19:47

Заново вызывать коратину можно только после того, как она закончила свою работу. ;)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Скрипты и Анимация.

Сообщение Левш@ 12 май 2010, 20:00

Заново вызывать коратину можно только после того, как она закончила свою работу.

Это понятно, спасибо.
Понятно что не совсем корректно, но тем не менее после пары перезапусков редактора снова скомпилил и теперь работает нормально.
И кстати курсор тоже исчез.
Странно все таки... :)
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Скрипты и Анимация.

Сообщение Neodrop 12 май 2010, 20:09

Кряка? :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Скрипты и Анимация.

Сообщение warr11r 12 май 2010, 23:11

Возможно, вместо LateUpdate стоило использовать FixedUpdate?
И animation.clip.length я бы умножал на Time.deltaTime.
Мудрость - это когда начинаешь понимать, что все время занимаешься какой-то х...ней.
Изображение
Аватара пользователя
warr11r
UNITрон
 
Сообщения: 310
Зарегистрирован: 06 июн 2009, 03:21
Откуда: Украина, Ровно
  • ICQ

Re: Скрипты и Анимация.

Сообщение Левш@ 12 май 2010, 23:22

Кряка?

Нет 30 дневный про триал.

animation.clip.length я бы умножал на Time.deltaTime.

Не совсем понял, зачем условие умножать на Time.deltaTime?
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Скрипты и Анимация.

Сообщение warr11r 12 май 2010, 23:29

Это идеи по поводу того, чтобы сделать скрипт выполняемым не каждый кадр, а через фиксированное время.
У меня есть теория, что вызов корутины в каждом ЛейтАпдейт не дает скрипту полноценно выполняться.
Мудрость - это когда начинаешь понимать, что все время занимаешься какой-то х...ней.
Изображение
Аватара пользователя
warr11r
UNITрон
 
Сообщения: 310
Зарегистрирован: 06 июн 2009, 03:21
Откуда: Украина, Ровно
  • ICQ

Re: Скрипты и Анимация.

Сообщение Левш@ 13 май 2010, 00:29

Да нет, заработало все.
Демка у нас лежит.

Кстати есть еще какие нибудь варианты делать паузу на время игры анимации, кроме yield WaitForSeconds (animation.clip.length);
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Скрипты и Анимация.

Сообщение gnoblin 13 май 2010, 16:15

И animation.clip.length я бы умножал на Time.deltaTime.

Вообще некорректная мысль.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Скрипты и Анимация.

Сообщение gnoblin 13 май 2010, 16:16

Кстати есть еще какие нибудь варианты делать паузу на время игры анимации, кроме yield WaitForSeconds (animation.clip.length);


Можно пропускать ветку логики в коде если animation.isPlaying==true
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Скрипты и Анимация.

Сообщение Левш@ 13 май 2010, 20:03

если animation.isPlaying==true

Очень даже неплохое решение, как я сам не додумался... :-w :)
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6