【总结】Unity动画模块

动画模块没有太多好说的,更多是练习积累的经验

Animator动画控制器

  • AnimatorControllerLayer 状态层,layer层级越高,动作优先级越高
  • AnimatorStateMachine 状态机
  • SubAnimatorStateMachine 子状态机

RuntimeAnimatorController 运行时动画状态机

Animate Physics 适合动画有物理的相互作用

ApplyRootMotion 用动画还是脚本控制位置

Culling Mode 动画裁剪

Write Default 将动画改变的数据结束动画后复原

Transition

  • Transition Offset部分的next State是不会执行的
  • Duration 部分是两个动画的混合。fixed duration 打钩的话 duration会以秒计算,而不是根据state的长度
  • order interrupt  是否只能被高优先级的transition打断?

当勾上时,可以选择

Value Function
None
這個transition不會被打斷
Current State
目前State的其他transition如果達成條件,會打斷目前的transition
Next State
下一個State的其他transition如果達成條件,會打斷目前的transition

Current State then Next State

都可以打斷,只是由Current State優先
Next State then Current State
都可以打斷,只是由Next State優先

意思就是说,勾选后,更高优先级的Transition可以打断当前这个Transition,比如我们要用AnyState到Hurt状态,如果此时正在发生其他状态间的Transition,那么设置None的话就只能等这个Transition结束才能切换到Hurt了。但是用其他选项就可以打断

可以用打断实现一些比较特殊的动画,比如硬直结束后可操作的攻击动画

Solo 和 Mute 的功能

不用变量控制的状态转移

  • Mute:禁用状态转移(哑掉transition);
  • 如果不选择solo,在没有变量控制(结束条件为“exit time”)的情况下,该状态优先选择动作列表中最前(或者说最上的)的状态转移;
  • 如果选择了某个solo,那么在没有变量控制(结束条件为“exit time”)的情况下,优先选择标记solo的状态转移;
  • 如果有多个状态转移选中了solo,那么优先选择这些已选中solo的状态转移中,在动作列表中靠前的状态转移;

基本的原则是,如果一个状态被标记为solo,那么其余的状态转移将被视为选中mute;

如果solo和mute同时被选中,那么mute的优先级更高(即视为只选中了mute)

连击的Transiton

问题目标:如combo1,至少播放0.6倍的动画,然后如果有输入就转换状态

判断输入的时间必须要小于exit time,有exitTime时transition的判断发生在exit time结束时,过了exit time就不进行condition判断了

Dawnblade中不用exit time,而是交给程序控制,何时可接受输入并切换

Blend Tree 动画混合树

1D就是一个参数混合多个动画

2D就是两个参数混合多个动画,一个XY空间中,点距哪个动画近就受其影响大

其他

AnimatorStateInfo

Animator.StringToHash

Animation帧动画

AnimationCurve

AnimationEvent

IK:正向运动学,根骨骼带动子节点骨骼运动

FK:反向运动学,由子节点带动父节点运动。

在Animator窗口中,对于要使用IK的动画状态勾上Foot IK选项,在Base Layer中勾上IK Pass选项。然后在代码中实现OnAnimatorIK函数来控制IK

Animator.SetIKPosition

SetIKRotation

SetIKPositionWeight

SetIKHintPosition

SetLookAtWeight

……

动画重定向

同一套Avatar骨骼的不同角色,动画绝对可以重用

动态控制动画帧事件

可以用Animator.animationClips获取,然后设置AnimationEvent触发time,functionName

AnimatorOverrideController 运行时修改挂载的clip

原文地址:https://www.cnblogs.com/sols/p/8456962.html

时间: 2024-07-30 22:59:42

【总结】Unity动画模块的相关文章

Unity 动画知识之一

Unity现在已经用的很广泛啦,可是却一直没有什么美术向的教程. 程序用方面的内容在各个论坛都有讨论,但是美术似乎很弱势啊. 明明美术也很需要掌握引擎方面的内容嘛! 山谷里的野百合还有春天呢 我们美术也要出教程! 这次选了本菜鸡比较不那么菜的细分领域?unity3d  3D美术模块 来讲 美术小伙伴们肯定是懒得看那么多字啦,所以我就写的尽量有意思一点吧…… 计划是从入门到住院全部讲完的,但是能不能讲完我也不晓得,挖坑不填什么的最开心了 至于为什么是从入门到住院,因为学了这套东西,你就具备了在项目

Unity动画

Unity 并没有自带建模工具. 3D建模工具 maya, 3dmax, blender Skinned Mesh Renderer Mesh Renderer Mesh Filter Modelling 最好是 T-pose Rigging 建立骨架(Skeleton) 的过程.定义骨头之间的运动关系.是由外部制作的(Maya 3dmax).Unity也没有工具用来做这个事情.Homanoid Character 至少需要15根骨头.臀部应该做为根. Skinning 将骨架绑定到 Mesh

CSS3 动画模块

动画模块 动画格式 //1.告诉系统需要执行哪个动画 animation-name:动画名 //3.告诉系统动画持续时间 animation-duration:时间 //2.告诉系统所需要创建一个名字为(动画名)的动画 @keyframe 动画名 { from(0%){ margin-left:0; } to(50%){ margin-left:500px; } } 动画属性 animation-delay 告诉系统延迟多少秒执行动画 animation-timing-function 规定动画

【Unity编程】Unity动画系统(一)

Unity动画系统 Unity动画系统,也称为"Mecanim",提供了以下功能: 简单的工作流程,设置动画的所有元素,包括对象,角色和属性. 支持导入外部创建的动画片段和使用内置动画编辑器制作的动画片段. 人型动画重新定位,动画角色的运动控制可以被所有的角色模型共享,即角色的外观(SkinedMesh)和运动(Animator)是分离的,它们互相组合之后形成最终的动画. 用于编辑动画状态的的简化工作流程,即动画控制器. 方便预览动画片段,以及片段之间的插值过渡. 这使得动画师可以独立

【Away3D代码解读】(五):动画模块及骨骼动画

动画模块核心存放在away3d.animators包里: Away3D支持下面几种动画格式: VertexAnimator:顶点动画 SkeletonAnimator:骨骼动画 UVAnimator:UV动画 SpriteSheetAnimator:二维切换动画 ParticleAnimator:粒子动画 PathAnimator:路径动画 这几种动画都有各自的特点及应用场景,一般而在3D游戏中应用得最广泛的是骨骼动画,因为骨骼动画是人物动画的核心,我们下半段会专门详解这个动画: 动画简介 核心

CSS动画之动画模块

过渡模块和动画模块的区别:过渡动画需要人为的去触发这个反应,而动画模块不需要人为相同点:都是动画:都是系统新增的属性:都是要满足三要素才有动画效果三要素:1.告诉系统执行哪个动画,要写出动画名称:animation-name:名称; 2.告诉系统我们需要创建一个名称的动画: @keyframes 名称 { from{ } to{ } } 3.告诉系统动画持续时长; animation-duration:动画持续时间;其他属性:动画运动的速度:animation-timing-function:(

Unity 动画系统 Animation 和 Animator的小实例

本文结合一个很简单的动画demo,分别采用2种方法,来对比Animation和Animator的使用方式: 方法1:单独使用Animation 方法2:Animation结合Animator 动画Demo 两个动画.一个是移动,一个是缩放. 实现方式的对比 一.单独Animation来实现 空场景,找到一张Sprite图片,拖到面板中,右键添加Animation组件.如下: 点中这张pig猪的图片,点击Unity的 Window->Animation->Animation.出现如下: 这个时候

Unity动画状态机学习

在Unity4.x之前,动画位移,上楼梯下楼梯等动作都需要自己写模块实现,包括人物转向等等.Unity状态机的出现解决了这个问题.它有一个Apply Root Motion的选项,勾选之后即可应用根骨骼的位移. Unity的状态机大致有如下知识点: 1.Hellow world 2.如何驱动 有时间继续写... Default State 默认状态,在视图里呈现为橙色 Any State 不管处于什么状态,只要条件满足,必然触发. 一般用于死亡的判断

Unity 动画(UITweener)、协程(Coroutine)和委托(Delegate)队列管理

问题         前段时间,项目中要做奖励界面UI缓动动画要一个接着一个播放,如:先播放达成星星动画,在播放经验数字增加动画,最后播放奖励物品动画. 当然最笨最直接的方法可以类似成语接龙那样,把下个动画的开始播放都写在上一个动画播放完毕委托中.一般直接的方法是实现起来非常之简单,但这里却不是,会看见代码中有一系列播放完毕回调函数(除了最后一个),显然维护起来是否费劲. 把上面的方法进行简化,把回调函数变为一个:维护一个动画的 List 和当前播放动画的索引 index ,然后再回调函数中只需