黑魂复刻游戏的玩家控制器(后跳及动画控制的重新设计)——Unity随手记(2021.4.1)

今天实现的内容:

动画控制的重新设计

我们将彻底取消跳跃信号,改为使用与速度相关的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");

BUG以及缺陷:

曲线给了我们更灵活的控制,但是一个好的曲线真的蛮难调的。


值得注意的:

到这里,我们终于要解决一个一直存在的问题了,黑魂游戏的实际奔跑和翻滚都是一个键(XBOX手柄B键),区别是一个是按住,一个是按一下,而跳跃是有单独按键的(手柄左摇杆下按),跳跃的触发前提依旧是需要跑起来,并且根据速度来决定要不要落地翻滚。
我们马上就要去正在实现这个了。重点在于同一个键区分是长按、还是单击。


猜你喜欢

转载自blog.csdn.net/qq_37856544/article/details/115377044
今日推荐