永劫无间动画系统记录(Unity线上分享)

[Unity 活动]-Unity X 永劫无间「Unity大咖作客」线上分享会 — 动作动画专场【回放】_哔哩哔哩_bilibili

使用插件:声音插件,ProBuilder

主要用到Unity的Humanoid动作

  • 男女两个英雄体型
  • 少量非人型怪物

目前动作state数量约为2k+,AnimationClip数量约9k
State和Clip关系:一个State可能有多个Clip,比如走的动作属于一个State,但不同的角色走的动作可能不一样。

  • 动补:较多是角色受击,角色死亡动画
  • 手K:

使用了较多的分层动画,目前英雄共有10个Layer

  • 基础层、左右手、头加左右手、上半身、手指层、逻辑层等

使用RootMotion为主,程序位移为辅

  • RootMotion:绝大部分移动、攻击动作
  • 程序位移:重力贴地、位移补偿、跳跃、飞索、受击位移

上下坡位移补偿,根据按跳长短做不同高度的跳跃,不同速度不同方向的飞梭飞行,不同时间不同距离的硬直位移

使用Playable API构建底层动作系统

  • 优点:

    • 可控制动画加载策略,按需加载、异步加载
    • 可更加灵活的控制PlayableGraph的数据流,可插入自定义的AnimationJob,使用特殊的动作
    • 加载自定义的配置数据,更方便和其他游戏系统结合
    • 自由都更高的Override机制
  • 缺点:

    • 没有直接使用Animator直观
    • 需要开发更多的配套工具
    • 有一定的学习成本

参考资料:SimpleAnimation、Animancer

动作事件编辑工具

1.png

某些事件只能在特定轨道上配置,某些事件需要成对配置。

层次化动作Tag系统

2.png

从不同粒度对动作归类,

部分特殊的动作机制

3.png

Motion Matching技术自动匹配目标动作


动作系统是最底层的系统,运动系统、技能系统都构建在动作系统之上。

运动系统:分类

  • 基础运动类型
    • 走、跑、疾奔、跳跃、蹲伏、滑铲等
  • 特殊运动类型
    • 攀爬、贴墙、索梁、走壁、爬树等
  • 飞索系统
    • 全场景可交互
    • 衔接各种特殊运动和基础运动

运动系统:特殊运动触发方式

  • 离线标注
    • 屋檐、索梁、爬树等运动触发区域
  • 运行时物理检测
    • 走壁、小障碍、飞索运动
  • 两者优缺点
    • 离职标注可控性和准确性高,但工作量大
    • 运行时物理检测灵活性高,但有性能开销

运动系统:ProBuilder的运用

  • 设计关卡原型


    4.png
  • 搭建测试区域,集中摆放各种规格的场景物件
  • 标注特殊运动触发区域,可通过选取模型的点、线、面辅助一些运算直接进行标注(比人工摆放trigger,还要对齐更高效)


    5.png

运动系统:运行时周边环境检测

  • 应用范围
    • 地面坡度检测,用于上下坡动作融合
    • 自动跨越前方小障碍
    • 飞檐走壁、贴墙动作
    • 跳跃目标点连通性检测
  • Unity的物理引擎
    • Raycast,SphereCast,OverlapSphere,OverlapCapsule等
  • 性能相关问题
    • 控制检测频率
    • 处理好 autoSyncTransforms
    • 用好Profiler

运动系统:物理数据管理

  • 场景物件Prefab规则
    • 编辑状态,物理和视觉资源在同一个原始prefab
    • 程序自动化将原始prefab拆分成视觉prefab和物理prefab
    • 运行时视觉prefab和物理prefab使用不同的加载策略
      • 视觉prefab在很远的地方就能看到,而物理prefab需要比较近距离才能起作用
  • 服务器物理数据
    • 碰撞信息、运动触发区信息日常进行导出
    • 服务器跑PhysX,提供各种物理查询和模拟服务

运动系统:优化方向

  • Trigger误触发问题
    • 改变部分交互方式
    • 更加准确的识别玩家操作意图
  • 运动流畅性和动作多样性
    • 程序过程化动画
    • 更轻量级的新增动作方法
  • 运动同步的优化
    • 弱网络相关优化

配套工具:动作录制和回放工具

6.png
  • IK分析
    • 保存中间状态
    • 对比分析IK效果(开、关)
    • 方便QA判定动作本身异常还是IK处理的异常
  • 动作流畅性分析
    • 分析相邻帧差异
    • 使用曲线形式展现
    • 客观评估动作流畅性
    • 方便快速定位问题


      7.png

配套工具:工作流程图

8.png

配套工具:其他动作系统工具

  • 层次化Tag编辑工具
  • 可视化连招图工具
  • 可视化运动触发区调试工具
  • 离线动作采样工具

配套工具:经验总结

  • 复杂配置数据,可以考虑编辑数据和运行数据分离
    • 编辑状态数据:高可读性、版本管理、协同编辑友好、可添加备注
    • 运行状态数据:低冗余、高性能(例:对动画引用使用hash)
  • 尽可能支持运行时重载数据
    • 用好ScriptableObject作为数据载体
    • 自定义格式的数据也尽量支持热加载

你可能感兴趣的:(永劫无间动画系统记录(Unity线上分享))