Unity - 如何快进到一定比例的动画?

时间:2018-04-06 23:22:28

标签: c# animation unity3d percentage lerp

好的,我已经查找了与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来跳转到特定的帧并获得动画的百分比

但是,我还没有看到任何相关内容 - 比如游戏因果关系(用Unity制作)我需要做一些类似魔术飞跃的网站滚动:https://www.magicleap.com

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

现在我可以在y轴上向上/向下拖动我的模型,我有一个模型可以移动的最大和最小transform.position.y(像一个dolley)

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%,并且能够在用户拖动时来回移动:

enter image description here

这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

对于每个州,动画师都有一个切换,通过浮点参数获取normalizedTime。顾名思义,将其值设置为0将使动画为0%,1为100%。您可以通过

设置参数的值
animator.SetFloat ("AnimStateTime", 0.5f);

如果您想平滑过渡,请使用

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

NormalizedTime