Войти
UnityФорумПрограммирование

Runtime проблема с AnimatorOverrideController и спрайтами

#0
11:51, 16 сен. 2020

Ребята, привет!

Помогите, застрял со следующей ситуацией: В своей игре я использую AnimatorOverrideController в скрипте, чтобы переопределять анимации IDLE, MOVE и ACTION для разных типов базового персонажа.
И так получается, что некоторые спрайты персонажей после анимации не возвращаются на место - к примеру, торчит рука не туда, или спрайт лица персонажа поменялся на другой.

Может, кто подскажет, в чем проблема?

Схема кода:

    protected override void Awake()
    {
        CacheAnimator = GetComponent<Animator>();        
        CacheAnimatorController = new AnimatorOverrideController(CacheAnimator.runtimeAnimatorController);
        CacheAnimator.runtimeAnimatorController = CacheAnimatorController;
        // Setting idle state for a character
        CacheAnimatorController[IDLE] = idleAnimation;
    }

    public void PlayMove(AnimationClip moveAnimation)
    {
        CacheAnimatorController[MOVE] = moveAnimation;
        CacheAnimator.SetBool(ANIM_KEY_MOVE, true);
    }

    public void ChangeActionClip(AnimationClip clip)
    {
        CacheAnimatorController[ACTION] = clip;
        CacheAnimator.SetBool(ANIM_KEY_DO_ACTION, true);
    }

Заранее благодарен!


#1
12:34, 16 сен. 2020

Могу предположить, что не хватает нужных ключевых кадров в некоторых анимациях, в результате чего  спрайт или положение руки остаются от прошлой проигрывавшейся анимации.

#2
(Правка: 13:32) 13:31, 16 сен. 2020

BooTheJudge

Когда я создаю AnimatorOverrideController, как asset, в редакторе юнити и переопределяю анимации IDLE, MOVE и ACTION в нем - все работает без проблем. Пардон, забыл упоменуть об этом.

Но при этом прийдется много чего переделывать в проекте, поэтому хотелось бы делать все в скрипте.

UnityФорумПрограммирование