unity使用人物动画作为角色移动的实际距离

Unity中有可以功能可以设置成按角色在3DMax里面的动作来作为角色在游戏里的实际移动距离。这样人物的移动速度实际就有模型动作控制了,看起来就会比较自然。
关于这个使用方式有些细节需要注意:
1.导入模型的时候要rig的Animation Type要选Humanoid.
(这个选其他模式就不行了,我不知道为什么。)
2.代码里可以实现OnAnimatorMove消息回调,在函数内部执行
Vector3 v = (m_Animator.deltaPosition * m_MoveSpeedMultiplier) / Time.deltaTime;

        // we preserve the existing y part of the current velocity.
        // y方向分量值不变
        v.y = m_Rigidbody.velocity.y;
        m_Rigidbody.velocity = v;

这样的方式更具模型的动作的速度来实时调整刚体的速度。

  1.    m_Animator.SetFloat("Forward", m_ForwardAmount, 0.1f, Time.deltaTime);
    

用来控制Ctrl中变量的值,通过这个值来控制动作的混合。(待机、走、跑等)

  1.    m_Animator.speed = m_AnimSpeedMultiplier;
    

这个可以修改动作的播放速度,如果遇到要改变角色的移动速度的时候,可以修改此值。默认为1,表示原速度;

你可能感兴趣的:(unity使用人物动画作为角色移动的实际距离)