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

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
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 разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
  • Страница 1 из 1
  • 1
Поиск:

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