ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Unity Animator使用经验

Unity Animator使用经验 在动作表现要求一般的项目中Unity的动画系统是完全够用的。在不满足项目的需求下则可以考虑像《永劫无间》一样基于Unity底层的Playable Graph架构自定义一套动画控制系统。[Unity 活动]-Unity X 永劫无间「Unity大咖作客」线上分享会 — 动作动画专场【回放】_哔哩哔哩_bilibili对于Unity的Animator动画系统熟悉以下几个概念基本就掌握了整个系统。一 Blending 动画融合这是最基础的。关于ExitTime游戏开发中ExitTime大多数情况下不勾选会影响到状态切换的自由度一般只有在归位到一个常驻动作时才会使用比如回到Idle。在游戏中特别是快节奏的动作项目中动作间瞬切并不会让你感觉不自然而强制过渡反而会导致拖沓。Crossfade一般CrossFade 用在状态机中两个没有“连线”过渡融合设置的状态之间的切换操作。比如从其他状态切换回move_tree状态过渡时间为0.2s。Animator.CrossFade(move_tree, 0.2f);而对于那些有状态间过渡融合设置的连线一旦设置了ExitTime那就不能在代码层面做Crossfade的操作二者是冲突的因为做了相似的事情。二 Sub State Machine类似分层状态机三 Blendtree常见的应用场景是针对于速度这个参数当取值不同时播放不同的子动画且从A动画切换到B动画的过程中实现了融合过渡。要注意的是这里有两种值的过渡模型一种是整数型-n ~ n一种是百分比-1 ~ 1需要按需设置。正确理解阈值上图是按照第一种值模型的。1表示 speed小于等于1时为 walk形式当speed大于1小于3时混合walk和run3表示为纯run。四 Layer分层可以把Layer想象成Photoshop的图层。Base Layer是背景图上面的Layer是叠加的图案Weight就是图层的不透明度。包含控制整个或部分模型动画的动画状态机较高层的状态有更高的控制权。为什么要分层不同维度状态组合的问题没有层的话组合状态会呈指数级增长。上下半身分离动画权重控制权重Weight决定了这一层动画对最终表现的影响程度。权重 0这一层完全不起作用角色表现完全由其他层决定。权重 1这一层完全覆盖下层动画的对应部分或按混合模式叠加而中间值则表示混合五 Layer - MaskAvatar Mask动画遮罩是实现上下半身分离例如上半身射击/挥手下半身走跑/站立的核心技术。因为有时候两个状态共用了相同的下半身动作而上半身动作是不同的。有点类似程序代码的重写的机制。动画类型有两种模式人形 Humanoid 或通用 Generic。人形只要通过点击人体的部位绿色状态表示有效Mask区域非常方便操作与直观。而通用类型则需要自定义所有的骨骼层级如上图红框。六 Override Controller类似代码的重写机制特别适合比如男女角色有相似的状态但是系统的状态时需要播放不同的动画视觉效果。基础的Controller比如以下图的fighter_controller定义默认的状态机实现。常规的Controller文件以.controller作为后缀Override Controller以.overrideController作为文件后缀。七 Rootmotion该模式无法做同步。即便做单机游戏也会陷入一种逻辑与视觉耦合的状态中。注意Rootmotion 勾选之后会强制改变那个被attached的Game Object的位移。如果一旦发现在某些时候播放动画结束之后对象的位置不符合预期那么需要确认一下此选项是否开启。
返回列表