UE TurnInPlace 转身动画的解决方案和常见问题

发布于:2022-12-14 ⋅ 阅读:(249) ⋅ 点赞:(0)

在许多第三人称 FPS 游戏中,原地转时动画 TurnInPlace 虽然很容易被玩家忽视,但对于制作者而言确是逃不开的一环,毕竟直接使用陀螺仪的旋转太过违和了。文章将介绍两种场景 TurnInPlace 的制作方案 - Controller 朝向 + 根据转身速度播放的转身动画Character Movement 朝向 + 上半身 Modify Bone + 带旋转曲线的转身动画,并给出方案二的常见问题的解决方案

- 方案一:Controller 朝向 + 根据转身速度播放的转身动画

方案代表

  • PUBG的瞄准状态
    在这里插入图片描述

方案实现

  • 设置角色转向为控制器朝向,根据角色Rotation的变化方向决定角色播放转身动画的方向,转身动画的播放速率与幅度由Rotation角度的变化率决定
    -Rotation角度变化率的计算方式
    在这里插入图片描述
  • 转身状态机
    在这里插入图片描述

方案优点

  • 实现简单,上半身变化稳定且迅速,适合需要快速响应的动画需求

方案缺点

  • 转身动画效果一般,容易产生滑步

- 方案二:Character Movement 朝向 + 上半身 Modify Bone + 带旋转曲线的转身动画

方案代表

  • ALS
    暂时无法在飞书文档外展示此内容

  • PUBG的端枪状态在这里插入图片描述
    方案实现

  • 设置角色转向为角色移动朝向,玩家在可以转身的 Idle 状态下小幅度旋转控制器会使用 Modify Bone 旋转上半身,当大于阈值后会根据转向和控制器旋转速度播放转身动画,转身动画播放时会读取 Rotation Amount 曲线的值并通过 Add Actor World Rotation 改变角色的朝向并完成转身

  • Modify Bone 旋转上半身的实现[图片][图片]- 转动角度大于阈值后根据转向和控制器旋转速度播放转身动画[图片]
    [图片]

  • 读取 Rotation Amount 曲线的值并通过 Add Actor World Rotation 改变角色的朝向
    [图片]

方案优点

  • 全身整体动画流畅,上半身稳定

方案缺点

  • 实现较复杂,动画不够及时,有转身延迟,当由于转身延迟导致,旋转角度 > 180°,会有 Modify Bone 突变的问题
    暂时无法在飞书文档外展示此内容

-方案二实现中常见的问题

1.转身时枪会摇摆

解决方案

  • 删除转身动画骨架上半身的动画数据
  • 将下半身转身 Add Actor World Rotation 和上半身扭动 Modify Bone 的逻辑写在同一个 Tick 中,保证这两个逻辑在同一帧内执行

2.转身时后移动的脚步会滑动

解决方案

  • 使用 Two Bone IK 将后移动的脚步在转身动画的前半段锁定,在动画后半段再让后移动的脚步移动(例如在播放左转动画时,前半段通过 FootLock_R 的值将右脚锁定)

3.动画有滑步

解决方案

  • 使用 IK Rig 的 IK Solver 和 IK Goal 将 Foot 骨骼的 Location 信息锁定

网站公告

今日签到

点亮在社区的每一天
去签到