2

好的,我已经查找了与 Unity 的 Animator 相关的所有内容,我知道您可以使用https://answers.unity.com/questions/1418940/how-can-i-know-跳转到特定帧并获取动画百分比a-percent-of-animation.htmlhttps://answers.unity.com/questions/181903/jump-to-a-specific-frame-in-an-animation.html

然而,我还没有看到任何关于这方面的内容 - 就像在游戏 Causality(使用 Unity 制作)中一样,我需要在滚动网站上做类似 Magic Leap 所做的事情:https ://www.magicleap.com

我在 Blender 中的模型上创建了一个动画,而不是运行它,我需要根据其 y 轴位置快进/转到动画的某个百分比。

现在我可以在 y 轴上向上/向下拖动我的模型,并且我有一个transform.position.y模型可以继续移动的最大值和最小值(就像一个小车)

Vector3 goTo = new Vector3 (transform.position.x, (initObjPos.y+touchDiff), transform.position.z);
                if (goTo.y >= maxHeight) { //max = 0.251f in y, and min?
                    transform.position = new Vector3 (transform.position.x, maxHeight, transform.position.z);
                } else if (goTo.y <= minHeight) {
                    transform.position = new Vector3 (transform.position.x, minHeight, transform.position.z);
                } else { //lower
                    transform.position = goTo;
                }

这是我需要动画在 y 位置为最大值时以 100% 完成,在最小高度为 0% 并且能够在用户拖动时来回移动的可视化:

在此处输入图像描述

这甚至可能吗?

4

1 回答 1

3

对于每个状态,动画器中都有一个切换以normalizedTime通过浮点参数获取。顾名思义,将其值设置为 0 将给出 0% 的动画和 100% 的动画。您可以通过设置参数的值

animator.SetFloat ("AnimStateTime", 0.5f);

如果要平滑过渡,请使用

animator.SetFloat ("AnimStateTime", 0.5f, 1, 10 * Time.deltaTime);

标准化时间

于 2018-04-07T01:58:44.290 回答