Animator блокирует доступ к компонентам объекта
|
|
Rachok | Дата: Вторник, 18 Октября 2016, 07:19 | Сообщение # 1 |
уже был
Сейчас нет на сайте
| Добрый день! Если добавить в Animator анимацию, которая изменяет положение объекта на сцене, а затем из скрипта попытаться изменить положение, то ничего не выйдет, даже если анимация не используется и вообще никак не связана Transition-ами с текущим состоянием. Например, создаю спрайт, создаю для него анимацию примитивного сдвига, затем в Аниматоре добавляю Empty State, делаю ее по умолчанию. Аниматор выглядит так: (все непустые анимации никак не связаны ни с чем)
В скрипте к спрайту пишу:
Код public Sprite redColor; void Start () {
GetComponent<SpriteRenderer> ().sprite = redColor; transform.position = new Vector2(0, 3); }
Позиция не изменяется. Если изменить у неиспользуемой анимации сдвига свойство Motion в None, то все смещение из кода будет работать. Аналогично поведение спрайтов, если анимация работает со спрайтами, то невозможно изменить спрайт у GameObject-а из кода. Почему так происходит? Как изменять положение объекта, на котором висит Аниматор с бездействующей анимацией сдвига. Ребята, помогите, несколько дней сижу над этим. P.S. Разобрался со смещением - если установить флажок Apply Root Motion, то смещение происходит. Но спрайты все равно не меняются.
Сообщение отредактировал Rachok - Вторник, 18 Октября 2016, 10:04 |
|
| |
Vicka | Дата: Вторник, 18 Октября 2016, 10:06 | Сообщение # 2 |
Another ART
Сейчас нет на сайте
| Rachok, ты пытаешься изменить глобальные координаты. Попробуй свой спрайт засунуть в пустышку. Пустышка будет объектом трансформа а спрайт - анимации.
Сообщение отредактировал Vicka - Вторник, 18 Октября 2016, 10:11 |
|
| |
Rachok | Дата: Вторник, 18 Октября 2016, 10:34 | Сообщение # 3 |
уже был
Сейчас нет на сайте
| Vicka, немного не понял. Перемещение сделать для внешнего пустого GameObject-а, а анимации оставить для спрайта? И двигать пустышку для сдвига в мировых координатах. Хорошо, перемещение удалось. Но спрайт все равно не меняется. Я не могу Спрайту изменить спрайт. Ахтунг! Каламбур.
Код GetComponent<SpriteRenderer> ().sprite = redColor; Не работает, пока есть анимация спрайтов на нем. Даже не задействованная.
|
|
| |
Minskii | Дата: Вторник, 18 Октября 2016, 15:14 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Rachok, может скрины приложите?
Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров. Java/Kotlin, C#, C++. Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
|
|
| |