Понедельник, 25 Ноября 2024, 05:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Запрет анимации из Update во время воспроизведения другой
GreexonДата: Среда, 27 Августа 2014, 17:39 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Здравствуйте, подскажите как запретить воспроизведение анимации из Update если нужно воспроизвести разовую.
Я пытался сделать проверку на воспроизведение анимации, затем изменять значения bool, а в другом скрипте сделать проверку на значение этой переменной вследствие чего либо разрешать, либо запрещать анимации в Update.
Оба скрипта:



Сообщение отредактировал Greexon - Среда, 27 Августа 2014, 17:41
LertmindДата: Среда, 27 Августа 2014, 18:07 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Попробуй использовать animation.IsPlaying("KatanaTakeClip"), тогда ты узнаешь когда анимация закончилась и сможешь использовать if'ы с Joy.
А вообще надо использовать Animator (Mecanim), в нём делают систему анимаций и тогда только булево значение меняешь и он переходит в другое состояние.


Сообщение отредактировал Lertmind - Среда, 27 Августа 2014, 18:13
GreexonДата: Среда, 27 Августа 2014, 18:42 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Спасибо, сейчас попробую.

Добавлено (27.08.2014, 18:42)
---------------------------------------------
Сделал так, со скриптом кнопки всё нормально но Animator выдаёт такую ошибку:
NullReferenceException: Object reference not set to an instance of an object
PlayerAnimator.Update () (at Assets/Scripts/PlayerAnimator.cs:30)
Часть скрипта аниматора после внесения изменений:

Код

   else if(Joy.transform.position.y == 0){
    if(TakeKatana.KatanaTaking == false){
    PlayerMesh.animation.CrossFade("IdleClip");
    }
   }


P.S.
пробовал и через && писать и поверх всего, всегда такая ошибка.
LertmindДата: Среда, 27 Августа 2014, 19:36 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Может из-за того, что ты назвал объект класса так же как и класс? public TakeKatana TakeKatana; // Это ужас
Хотя даже так должно работать. По твоему коду не видно, что не так. И я не понял, зачем проверять на false, я думал что проверку if (!animation.IsPlaying("KatanaTakeClip")) ты поставишь перед всеми if Joy.


Сообщение отредактировал Lertmind - Среда, 27 Августа 2014, 19:49
GreexonДата: Среда, 27 Августа 2014, 20:17 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Там не TakeKatana.TakeKatana, а TakeKatana.KatanaTaking.
И спасибо, ваш способ помог, но мне всё равно нужна проверка на bool для выбора анимации: с мечём, без меча.
LertmindДата: Среда, 27 Августа 2014, 21:36 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Цитата
Там не TakeKatana.TakeKatana, а TakeKatana.KatanaTaking.

Я про объявление переменной. public TakeKatana TakeKatana; // Это ваша строчка

Мой способ так себе, нужно делать гибче. Один из хороших способов это "система конечных автоматов" (finite-state machine (FSM)).
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг