Пятница, 10 Мая 2024, 18:31

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Скрипт не вызывает воспроизведение анимации
Скрипт не вызывает воспроизведение анимации
GreexonДата: Среда, 08 Апреля 2015, 19:18 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Здравствуйте, у меня скрипт должен вызывать функцию из другого скрипта, которая будет воспроизводить анимацию, но он этого не делает, хотя все другие действия выполняет, а эта функция через другой скрипт благополучно вызывается.
Скрипт:
robertonoДата: Среда, 08 Апреля 2015, 19:39 | Сообщение # 2
Чокнутый Кот
Сейчас нет на сайте
Greexon, ничего не понял.
Какая функция ? Какой класс? Что куда? Ничего не понял..
MANMANAДата: Среда, 08 Апреля 2015, 19:50 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
а давайте все обзывать Animator'ами... smile
в другом скрипте скрипту "CharacterAnimator" тож имя Animator даешь?
не запутается Юнька-то?
http://docs.unity3d.com/ScriptReference/Animator.html
я что-то в стандартных методах Аниматора не вижу ToBattleAn

Добавлено (08 апреля 2015, 19:50)
---------------------------------------------
а если вот так написать

Код
public Animator CharacterAnimator;
, то еще интересней будет


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею


Сообщение отредактировал MANMANA - Среда, 08 Апреля 2015, 19:48
GreexonДата: Среда, 08 Апреля 2015, 20:00 | Сообщение # 4
почетный гость
Сейчас нет на сайте
MANMANA
Спасибо конечно за совет, но проблема то не в этом была.

robertono
Скрипт который я предоставил не вызывает функцию из другого.
MANMANAДата: Среда, 08 Апреля 2015, 20:01 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
а в чем была проблема? если решили, то напишите...

функцию-то вы вот так вызываете Animator.ToBattleAn(); ?


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
GreexonДата: Среда, 08 Апреля 2015, 20:07 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Даже когда я её так называл, в одном скрипте она вызывалась, а в этом нет
MANMANAДата: Среда, 08 Апреля 2015, 20:13 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
глянул сейчас, да именование в виде Animator не мешает получить доступ к функции.
а в функции ToBattleAn пробовали прописать Debug.Log("Invoked!!!!!"), может разок вызывается?

ведь, как вы говорите
вот эта часть кода
Left.Play();
Right.Play();
InBattle = true;

выполняется у вас.


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
GreexonДата: Среда, 08 Апреля 2015, 20:24 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Очень странно, при старте игры выполняется 68 раз(анимация не проигрывается), но при нажатии на кнопку не выводится

Добавлено (08 апреля 2015, 20:24)
---------------------------------------------
Ошибся, добавил не к той функции, а эта выводит, но анимацию не играет

MANMANAДата: Среда, 08 Апреля 2015, 20:31 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
если функция вызывается из этого скрипта, то при касании пальцем тача в массив Input.touches было добавлено 68 элементов.
для них сработал цикл foeach ... потом всем им проставился false

может так - if (touch.phase == TouchPhase.Began)
{
if(this.GetComponent<GUITexture>().HitTest(touch.position) & InBattle == false)
{
Animator.ToBattleAn();
Left.Play();
Right.Play();
InBattle = true;
}
}

Добавлено (08 апреля 2015, 20:31)
---------------------------------------------
тогда функцию в студию


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
GreexonДата: Среда, 08 Апреля 2015, 20:32 | Сообщение # 10
почетный гость
Сейчас нет на сайте
Говорю же ошибся, просто из-за чего-то не играется анимация

Добавлено (08 апреля 2015, 20:32)
---------------------------------------------
Вот весь скрипт аниматора:

MANMANAДата: Среда, 08 Апреля 2015, 20:32 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
или код того, как вы вызываете функцию из другого кода (тот случай, когда при ее вызове проигрывается анимация)


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
GreexonДата: Среда, 08 Апреля 2015, 20:34 | Сообщение # 12
почетный гость
Сейчас нет на сайте
Ну и вот ещё первый скрипт, который работает:
MANMANAДата: Среда, 08 Апреля 2015, 20:37 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
а там так и должна быть Animation, или все таки Animator?

Добавлено (08 апреля 2015, 20:36)
---------------------------------------------
Animator.CrossFade
Create a dynamic transition between the current state and the destination state.

Animation.CrossFade
Fades the animation with name animation in over a period of time seco...

Добавлено (08 апреля 2015, 20:37)
---------------------------------------------
если все верно, то дело, должно быть, в "ToBattle"
есть ли такая анимация. верно ли название?


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
GreexonДата: Среда, 08 Апреля 2015, 20:39 | Сообщение # 14
почетный гость
Сейчас нет на сайте
Ну в случае с анимацией прыжка всё работает (UpAn())
MANMANAДата: Среда, 08 Апреля 2015, 20:45 | Сообщение # 15
почти ветеран
Сейчас нет на сайте
поменяйте в скрипте "ToBattle" на "Up" - проиграется анимация для Up при тех же действиях с джойстиком/тачем, которые выполняются для ToBattle?

Добавлено (08 апреля 2015, 20:43)
---------------------------------------------
но сдается мне, что дело в InBattle = true;

Добавлено (08 апреля 2015, 20:45)
---------------------------------------------
в логике


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
GreexonДата: Среда, 08 Апреля 2015, 20:52 | Сообщение # 16
почетный гость
Сейчас нет на сайте
Так не работает, но ToBattle работает в скрипте для Up

Добавлено (08 апреля 2015, 20:52)
---------------------------------------------
Как я и думал, её перебивает анимация Idle, но вот почему Up при этом работает?

MANMANAДата: Среда, 08 Апреля 2015, 21:09 | Сообщение # 17
почти ветеран
Сейчас нет на сайте
значит ..... & InBattle == false){

и
InBattle = true;

Добавлено (08 апреля 2015, 20:53)
---------------------------------------------
тут уж не знаю

Добавлено (08 апреля 2015, 20:58)
---------------------------------------------
но логика мне кажется разной

Код
   if(Grounded == false){  
     AnimatorCh.UpAn();  
    }  
    foreach(Touch touch in Input.touches){  
     if(this.GetComponent<GUITexture>().HitTest(touch.position) & Grounded == true){  
      Move.Jump();  
     }  
    }  

и
Код
   foreach(Touch touch in Input.touches){  
     if(this.GetComponent<GUITexture>().HitTest(touch.position) & InBattle == false){  
      Animator.ToBattleAn();  
      Left.Play();  
      Right.Play();  
      InBattle = true;  
     }  
    }

нет?
тут ведь еще работает и функция Move.Jump();

Добавлено (08 апреля 2015, 21:01)
---------------------------------------------
если так

if(Grounded == false){
AnimatorCh.UpAn();
}
foreach(Touch touch in Input.touches){
if(this.GetComponent<GUITexture>().HitTest(touch.position) & Grounded == true){
Move.Jump();
Grounded = false;//прыжок будет работать?
}
}

Добавлено (08 апреля 2015, 21:09)
---------------------------------------------
и еще ко всему прочему закоммитить Move.Jump(); smile


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
harmoxyneДата: Среда, 08 Апреля 2015, 21:25 | Сообщение # 18
заслуженный участник
Сейчас нет на сайте
Код
Grounded == false
и
Grounded == true

писать долго и не красиво. На замену пишите
Код
!Grounded
и
Grounded

Короче и проще.
Есть подозрение, что у анимации Idle включена опция "Has exit time", и пока она доигрывается, условие успевает сброситься. Попробуйте убрать, если оно включено.
GreexonДата: Четверг, 09 Апреля 2015, 11:16 | Сообщение # 19
почетный гость
Сейчас нет на сайте
Спасибо;

не могу найти где это включить
MANMANAДата: Четверг, 09 Апреля 2015, 12:28 | Сообщение # 20
почти ветеран
Сейчас нет на сайте
у меканима http://docs.unity3d.com/500....on.html
а в Legacy Animation тоже такое есть?
я не нашел здесь http://docs.unity3d.com/ru/current/Manual/Animations.html


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Скрипт не вызывает воспроизведение анимации
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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