如何知道Unity中动画的结束坐标?
How to know end coordinates of animation in Unity?
我想知道在Unity中动画结束时根骨骼的坐标。我试图以编程方式将带有 Animator 控制器的单元放到场景中,播放动画并多次执行 Update()。但坐标与真实略有不同。
有没有办法知道动画结束时的准确坐标?
更新。此代码应该可以正常工作,但不能准确工作:
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;
终于在Unity3d论坛上找到了绝妙的答案。
animator.SetTarget(AvatarTarget.Root, 1.0f);
animator.Update(0);
Vector3 position = animator.targetPosition;
完美运行。
我想知道在Unity中动画结束时根骨骼的坐标。我试图以编程方式将带有 Animator 控制器的单元放到场景中,播放动画并多次执行 Update()。但坐标与真实略有不同。 有没有办法知道动画结束时的准确坐标?
更新。此代码应该可以正常工作,但不能准确工作:
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;
终于在Unity3d论坛上找到了绝妙的答案。
animator.SetTarget(AvatarTarget.Root, 1.0f);
animator.Update(0);
Vector3 position = animator.targetPosition;
完美运行。