动画系统

105-动画的录制和曲线
给Camera添加改变背景颜色的动画在clear flags选择solid color直接录制动画,改变面板中的颜色
录制中但凡有参数改变都会添加关键帧
选中一栏参数,就只显示一种曲线
106-按钮动画
添加按钮,在按钮物体上的Button组件,Transition过渡选Animation​,点auto generate animation生成按钮状态机Animator Controller,四个动画和状态机做成一个文件。一个动画添加一个关键帧即可,意为这个状态下是这种效果
107-2D精灵动画
1.全选要做动画的图片拖入场景中
2.先拖角色图片,老样子Window选Animation编辑动画,或108手动创建Animator Controller拖入手动添加的组件中
109-3D模型基础
fbx包含模型或动画,或只有动画(名字加@)。具体取决于导出方式
110-导入模型,解决贴图材质丢失
在Scene选中人物,找到skinned mesh renderer组件,如果材质球是灰色的无法修改,选中Project面板的模型在Materials里location选用外部材质,返回组件shader选standard标准的,diffuse map漫反射贴图拖入albedo反照率里,以上修改都是自动保存到Asset里
搜索同名组件名字里不要打空格
111-模型的三种导入设置
在Project视图选中模型进行导入设置,并应用,已在场景中的也会发生改变
rig(操纵)用来设置动画的导入方式,legacy是比较旧的版本,无法使用状态机,选择None就是不导入动画。avatar definition骨骼映射,root node根节点
114
取消勾选过渡线的Has Exit Time随时准备切换动画
116
勾选Rig下的Optimize Game Objects会让场景的人物模型隐藏骨骼节点
117-Rig设置
avatar definition骨骼映射:是直接创建还是从别的模型拷贝
config进入新场景,把当前人物骨骼映射到Unity标准骨骼上,看是否正确,点击mapping映射,可选automap自动映射,pose选enforce T pose即把人物,点击muscles进入肌肉设置
骨骼场景中的棱锥也表示了骨骼节点的父子关系,点击Done从config骨骼场景中退出
118-Animation设置
loop match判断动画是否连贯,勾选Bake into pose使动画对具体运动不产生影响
based upon基于那个方向或位置计算,如果动画有偏移,调这个
119-骨骼重定向
在动画类型Humanoid下,人物模型之间骨骼映射不同,avatar definition骨骼映射要选creat from this model
在人物的animator组件下配置好controller和avatar
121-动画导入设置
全选动画文件,和不带动画的角色文件一样,rig设置为humanoid,但所有动画文件的骨骼映射设为copy from other avatar,把人物角色文件的avatar拖入所有动画文件出现的source中。还有问题骨骼映射就选creat from this model
122
将场景预制体拖入场景中,然后可以把场景static勾选上
将Idle动画设置勾选loop time,loop pose,bake into pose
124-125
int verticalNumID = Animator.StringToHash(“VerticalNum”);//把字符串转化为哈希值,哈希值就是一个ID
动画直接控制人物行走
127-1D混合树
在Animator面板右键添加混合树,双击混合树进入编辑,双击空白,退出编辑。进入编辑后,点选混合树,点加号新建动画槽,将动画拖入
1D混合树,即一个参数控制所有动画的混合,你可以自动计算门槛值,也可以选homogeneous time自动生成动画播放速度
128-2D混合树
混合树类型修改为2D Freedom Directional自由定向
compute positions选择X Position From的Angular Speed Rad
130-混合类型
2D Freedom Directioal允许在同一方向有多个动画,比如向前走和向前跑,不过要确保在0,0位置有idle动画。2D Simple Directioal不行
131-相机跟随
targetTran.TransformDirection(offset)把offset玩家到相机路径向量当做target下的局部坐标系向量,然后通过方法转化为世界坐标系向量,反正括号里的就是局部坐标系的向量
133
animat.GetFloat(VParameterID)得到动画状态机的参数
134
hit.distance碰撞点到射线起点的距离
135
hit.collider.bounds.size.y得到碰撞框的边界高度
animat.GetCurrentAnimatorStateInfo(0).IsName(“Localmotion”)判断当前是否处于localmotion状态
137
当动画的Curves中的曲线名字与Parameters的某个参数名字一样,unity会将曲线的值自动设置给参数,按住shift或ctrl控制曲线视图的缩放
143
Layers中Blending为override的话,排下面的层会覆写上面的层,具体覆盖多少由权重决定,Blending为additive即为添加的,在上面的层的基础上附加,但如果上面的影响太大,也不会附加上
Layer从上到下的索引是从0开始,依次递增
在Project下右键添加Avatar Mask骨骼遮罩,在Humanoid点击临近空白位置,可整体设置为红色或绿色,绿色表示动画可以影响到的部分,红色表示影响不到的
点Layers中的Mask后的圆圈,选中设置好的骨骼遮罩,出现M标识意为有骨骼遮罩,记得将权重设为1
145
IK动画,反向动力学
在肩上的木头游戏物体下创建两个空物体,用来表示手要托的点的位置
在手部Layer设置中勾选IK Pass会出现IK标识
private void OnAnimatorIK(int layerIndex)所有勾选了IK Pass的Layer都会调用这个方法
animat.SetIKPosition 以及 animat.SetIKPositionWeight
animat.SetIKRotation 以及 animat.SetIKRotationWeight

你可能感兴趣的:(Unity)