您的位置:首页 > 移动开发 > Unity3D

Unity动画系统进阶

2017-12-24 18:05 393 查看

Unity动画系统进阶

##1、 动画层与遮罩效果

++1.1、动画层

++++在Unity中可以使用动画层来管理不同类型的动画分层处理。

++++打开层设置

--Weight :权重

--Mask :遮罩

--Blending :叠加或重写

--Sync :同步

--IK Pass :可使用IK



++1.2、动画遮罩

++++动画层遮罩能够在本层动画中,身体的特定部分选择性的激活或禁用在Project面板下创建一个Avatar Mask。

++++身体遮罩包括头部、左手臂、右手臂、左手、右手、左腿、右腿和根部,还可以选择给手和腿添加IK,这将决定IK曲线是否会包含在动画融合中,点击身体部分可以激活或禁用对应部分的动画。



++++动画遮罩

--根据骨骼节点,设置动画遮罩。

--设置完毕后,动画会按照遮罩效果播放。



##2、IK动画

++2.1、IK动画

++++Inverse Kinematics 反向运动

--1、大多数动画是由旋转关节角度的骨骼来预先确定的值。子关节的位置变化根据父节点的旋转,因此关键链的最终位置会根据角度和它所包含的各个关节的相对位置来确定。这种方法构成的骨架被称为正运动学。

--2、IK动画全名是Inverse Kinematics意思是反向动力学,就是子骨骼节点带动父骨骼节点运动。比如跳街舞的少年用手撑着身体在地上转圈,手就是子骨骼,胳膊身体就是它的父骨骼,这时运动手就需要带动胳膊身体来移动。

++++反向运动学(IK)

--IK动画需要使用Unity5新版的动画系统。

--要设置一个IK角色,你通常有周围的场景中一个与角色交互的物体对象,然后设置IK直通脚本,特别是动画功能,如:

  ---SetIKPositionWeight,

  ---SetIKPosition

++2.2、使用IK动画

++++设置IK

--我们需要从一个正确配置的Avatar的人形Mecanim角色开始,接下来创建一个动画控制器,包含至少一个动画人物。

--然后在动画窗口的图层面板中,单击图层的齿轮设置图标,并在弹出的菜单中选中IK复选框。

++++注意:人型动画才能设置IK。



++2.3、脚本控制

    animator.SetIKPositionWeight(AvatarIKGoal.RightHand,
1);
    animator.SetIKRotationWeight(AvatarIKGoal.RightHand,
1);
 
if(ikActive){
    animator.SetIKPosition(AvatarIkGoal.RightHand,
rightHandObj.position);
    animator.SetIKRotation(AvatarIKGoal.RightHand,
rightHandObj.rotation);
}else{
    animator.SetIKPositionWeight(AvatarIKGoal.RightHand,
0);
    animator.SetIKRotationWeight(AvatarIKGoal.RightHand,
0);
}

##3、动画曲线

++3.1、添加动画曲线

++++选择动画片段

++++添加动画曲线



++3.2、设置动画曲线






++3.3、编辑动画曲线

++++曲线X轴代表标准化时间,范围始终在0.0到1.0之间(不管持续时间多长,分别对应于动画片段的开始和结束)。

++++曲线的Y轴代表时间点对应的值。

++++动画曲线值可以通过获取参数值方法获取,值随着时间点的变化而变化。



##4、 动画事件

++4.1、何时用到动画事件

++++当你需要在角色动画播放到某一帧的时候需要做其他处理,举个例子,士兵丢炸弹是一个动画,但是炸弹在什么时候丢出去呢,按常理来讲应该是当手举到头顶左右的地方丢出去。

++4.2、怎么用动画事件

++++在播丢炸弹动画的时候,在你想要丢出去的那一帧增加事件。

++4.3、设置动画事件

++++1、选择动画片段

++++2、添加动画事件



++++3、在动画执行过程中的某一帧执行特定的方法



++++4、动画事件编辑界面



++++5、当动画执行到事件时间点时,会自动执行指定函数

--函数实现

void EventMethod(float
value){
    print(“value
=” +
value);
}
--注意:

  --1、方法必须是放置在该人物对象身上的脚本组件中。

  --2、参数只能增加一个,且参数类型必须为以上四种(Float、Int、String、Object)。

--_--VRunSoft : Lovezuanzuan--_--
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: