明天实现的内容:
动画管制的从新设计
咱们将彻底勾销跳跃信号,改为应用与速度相干的forward参数来判断以后应该转换到哪个动画。


当初jump曾经不再须要,能够删除了,也就不须要在代码中触发了,同时也就不必Clear Signal了。

后跳动画的退出
在黑魂网络游戏中,在原地站住不动时按下翻滚键,玩家会做出后跳的动作。咱们退出这个新的动作。当forward小于0.1时,按下roll键会进行后跳。

当初,ground的转换优先级也要调整一下了,首先应该还是fall,而后因为咱们是判断forward小于某个值,所以其次是jab,再其次是roll,最初才是jump。

后跳冲量
和翻滚一样,增加一个OnJabEnter,通过FSMOnEnter脚本来调用,OnJabEnter要应用两个参数,一个示意后跳的间隔,一个示意后跳产生的高度。其实要不要产生高度取决于动画看着行不行。

    // 进入动画节点jab时执行的办法 通过PlayerController动画机中的jab节点上挂载的FSMOnEnter调用    public void OnJabEnter()    {        // 敞开输出并且锁定立体挪动        DisableInput_LockPlanar();        // 使用后跳冲量        m_planarVec = -model.transform.forward * jabVelocity;        // 使用跳跃冲量        m_jumpThrustVec.y = jabHeight;    }

以上办法是我本人的,上面是老师的方法,说白了就是应用StateMachineBehaviour脚本上的OnStateUpdate来更新地位。

public class FSMOnUpdate : StateMachineBehaviour{    public string[] onUpateMessages;    // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)    {        foreach (var msg in onUpateMessages)        {            animator.SendMessageUpwards(msg);        }    }}

当然,OnStateUpdate其实仍旧只是发送音讯,理论的地位更新还是要交给PlayerController中的新办法OnJabUpdate。

    // 进入动画节点jab时执行的办法 通过PlayerController动画机中的jab节点上挂载的FSMOnUpdate调用    public void OnJabUpdate()    {        m_jumpThrustVec = -model.transform.forward * jabThrust;    }

为了使后跳的位移显得更天然,咱们将应用曲线来管制每次的位移量。

为jab动画增加曲线,调整好曲线的款式,同时增加新的float型动画参数jabVelocity,肯定和曲线同名。

这样做了当前,参数jabVelocity就齐全受曲线的管制了。咱们要做的就是用jabVelocity去设置jabThrust。

    m_thrustVec = model.transform.forward * m_anim.GetFloat("jabVelocity");