关于unity:黑魂复刻游戏的玩家控制器翻滚及跳跃的重新设计Unity随手记

52次阅读

共计 1105 个字符,预计需要花费 3 分钟才能阅读完成。

明天实现的内容:
翻滚和跳跃的从新设计
依照黑魂游戏的设计,跳跃其实只有在跑起来时能力起跳,并且随同翻滚动作,也就是说咱们之前设计的被动向前跳跃的性能在黑魂游戏里是没有的,咱们的设计要改。
当初的设计是将跳跃键替换为翻滚键,让翻滚取代跳跃,并且只有跑起来时按下翻滚键能力跳起来,并且在落地时会进行翻滚。

翻滚动画及触发逻辑
这是一个前滚翻的动画,须要将动画的 Y 轴位移也 bake into pose。

将动画间接退出到动画机。翻滚会产生在玩家被动按下翻滚键时进行,并且间接转换回 ground。

转换条件是当玩家按下翻滚键时(原来是跳跃键),触发动画机参数 roll。roll 的触发通知动画机进行转换。

因为 ground 能够转换到多个其它动画状态,所以优先级就显得很重要了。配合 roll 和 jump 的相干代码,优先级如下。

roll 和 jump 的相干代码如下,首先是 roll 的时候须要和之前的 jump 一样将输出敞开,立体挪动锁死。

    // 进入动画节点 roll 时执行的办法 通过 PlayerController 动画机中的 roll 节点上挂载的 FSMOnEnter 调用
    public void OnRollEnter()
    {
        // 敞开输出并且锁定立体挪动
        DisableInput_LockPlanar();}

最初是 roll 的触发代码。

    // 翻滚动画
    if(pi.roll) m_anim.SetTrigger("roll");

翻滚的向前冲量
既然翻滚时锁死了立体挪动,咱们就须要一个翻滚的冲量来让动画显得不那么奇怪(位移和动画不匹配)。目前咱们的计划是锁定后调整立体挪动量为归一化后的立体挪动向量乘上翻滚冲量,这样会使得走和跑时的翻滚位移齐全一样。其实更好的方法是依据不同速度制作不同的翻滚动画(走路时和跑时),这样能使得咱们能够针对走和跑的翻滚设置不同的速度。

    // 翻滚冲量 用于使翻滚时的位移显得更正当
    public float rollThrust= 2.0f;

    // 进入动画节点 roll 时执行的办法 通过 PlayerController 动画机中的 roll 节点上挂载的 FSMOnEnter 调用
    public void OnRollEnter()
    {
        // 敞开输出并且锁定立体挪动
        DisableInput_LockPlanar();
        // 翻滚冲量
        m_planarVec = m_planarVec.normalized * rollThrust;
    }

游戏角色跳跃并向前翻滚
之前说过,当初只有在奔跑时按下翻滚键能力跳跃。跳跃仍旧采纳 jump 参数来触发。留神转换优先级。

触发代码如下。

    // 当跑起来时按下翻滚键 能力进入跳跃
    if(pi.run && pi.roll) m_anim.SetTrigger("jump");

正文完
 0