[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
动作事件编辑工具

某些事件只能在特定轨道上配置,某些事件需要成对配置。
层次化动作Tag系统

从不同粒度对动作归类,
部分特殊的动作机制

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误触发问题
- 改变部分交互方式
- 更加准确的识别玩家操作意图
- 运动流畅性和动作多样性
- 程序过程化动画
- 更轻量级的新增动作方法
- 运动同步的优化
- 弱网络相关优化
配套工具:动作录制和回放工具

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

配套工具:其他动作系统工具
- 层次化Tag编辑工具
- 可视化连招图工具
- 可视化运动触发区调试工具
- 离线动作采样工具
配套工具:经验总结
- 复杂配置数据,可以考虑编辑数据和运行数据分离
- 编辑状态数据:高可读性、版本管理、协同编辑友好、可添加备注
- 运行状态数据:低冗余、高性能(例:对动画引用使用hash)
- 尽可能支持运行时重载数据
- 用好ScriptableObject作为数据载体
- 自定义格式的数据也尽量支持热加载
网友评论