在GetAxis上没有跳过值以获得更平滑的动画UNITY3D

时间:2016-08-28 19:01:21

标签: animation unity3d animator

我有一个问题,我想知道是否有更简单的解决方法。

我正在使用Input.GetAxis(),例如,让我们说水平。

持D->使用Input.GetAxis(“Horizo​​ntal”)将导致值逐渐从0变为1。 释放D->将逐渐将其恢复为0。

这是我的问题。如果我按住D->,则按A< - 并释放D->,该值而不是逐渐下降1到0,然后0到-1,而是立即捕捉到0并继续逐渐下降到-1

我正在使用此值来控制我的动画,这使得它们都很难看。 有没有一种方法可以让我的价值逐渐下降,就像我打算没有太多代码那样,或者我错过了动画师的一些设置?

1 个答案:

答案 0 :(得分:0)

    float tempADFloat = playerAnim.GetFloat("ADInput");

    if (_ADInput != 0)
    {
        playerAnim.SetFloat("ADInput", Mathf.Clamp(tempADFloat + 0.1f * _ADInput, -1f, 1f));

    } else
    {
        if ((tempADFloat < 0.2 && tempADFloat > -0.2))
        {
            playerAnim.SetFloat("ADInput", 0);

        } else if (tempADFloat < 0)
        {
            playerAnim.SetFloat("ADInput", tempADFloat + 0.1f);

        } else if (tempADFloat > 0)
        {
            playerAnim.SetFloat("ADInput", tempADFloat - 0.1f);
        }
    }

playerAnim是我的角色动画师参考。 这种方式动画过渡平稳。

我使用tempADFloat&lt; 0.2而不是tempADFloat&lt; 0.1因为无法及时设置和检查该值。它基本上最终会来回跳0.1到0