Как узнать конечные координаты анимации в Unity?

Я хочу узнать координаты корневой кости в конце анимации в Unity. Я пытался программно поместить объект с контроллером Animator на сцену, воспроизвести анимацию и выполнить Update() несколько раз. Но координаты немного отличаются от реальных. Есть ли способ узнать точные координаты в конце анимации?

Upd. Этот код должен работать как надо, но он работает некорректно:

        animator.transform.position = new Vector3(0, 0, 0);
        animator.transform.rotation = Quaternion.Euler(0, 0, 0);            
        animator.Play(_hashName, 0, 0);
        AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
        duration = stateInfo.length;
        float t = 0;
        float delta = 0.01f;
        while (t < duration)
        {
            animator.Update(delta);
            t += delta;
        }
        Vector3 endCoords = animator.transform.position;

1 ответ

Наконец я нашел блестящий ответ на форуме Unity3d.

animator.SetTarget(AvatarTarget.Root, 1.0f);
animator.Update(0);
Vector3 position = animator.targetPosition;

Работает отлично.

Другие вопросы по тегам