纳金网
标题:
Mecanim动画系统 - 在角色上使用Mask 叠加动画层
[打印本页]
作者:
艾西格亚
时间:
2013-10-9 02:28
标题:
Mecanim动画系统 - 在角色上使用Mask 叠加动画层
本帖最后由 艾西格亚 于 2013-10-10 00:12 编辑
2013-10-9 01:15 上传
下载附件
(78.65 KB)
导读:
五分钟了解Mecanim角色动画系统
http://www.narkii.com/club/thread-305414-1.html
Mecanim动画系统 - 使用Blend Trees控制角色动作
http://www.narkii.com/club/thread-305557-1.html
在前面的教程里面,我们已经了解到Mecanim的基本操作与Blend Trees的结合用法,如图所示,目前在角色已经设置了Idle与Move的动作,通过键盘的操作可以在场景中对角色进行前后左右与加速的控制。
2013-10-9 01:15 上传
下载附件
(51.49 KB)
有的朋友可能还注意到一个情况,就是角色在移动的过程中,如果需要进行类似投弹与射击的动作,由于角色仍然处于行进的过程,在这种情况下,用传统的动画控制方式是无法达到这种效果,此时就需要使用动画层的叠加方式来制作,而使用Mecanim系统正是一个最理想的解决方案。
接下来的部分,我们将介绍如何使用Mask功能在角色上叠加不同的动画,延续前面的Blend Trees教程,在导入附件的资源包后,打开Mixing Layers的场景,选择zModified_Character > Swat@firing_rifle文件,这是一个模拟士兵角色射击的动作。
2013-10-9 01:15 上传
下载附件
(31.68 KB)
将Rig模式切换为Humanoid,Avatar Definition选择CopyFromOtherAvatar,然后在Source里面添加SwatAvatar,按下Apply完成设置。
2013-10-9 01:15 上传
下载附件
(50.97 KB)
接着在Animations里面进行属性设置,勾选Loop Pose与Root Transform Rotation > Bake into Pose、Root Transform Position > Bake into Pose这三个选项,Base Upon分别为Body Orientation与Original,最后再按下Clamp Range完成动作的分割即可。
2013-10-9 01:15 上传
下载附件
(73.43 KB)
选择Swat@toss_grenade文件,同样的将Rig模式切换为Humanoid,Avatar Definition选择CopyFromOtherAvatar,在Source里面添加SwatAvatar后按下Apply完成设置。
在Animations里面不需要勾选Loop Pose,因为Swat@toss_grenade是一个模拟投弹的动作,只需勾选Root Transform Rotation > Bake into Pose、Root Transform Position > Bake into Pose这两个选项即可,最后再按下Clamp Range完成动作的分割。
2013-10-9 01:15 上传
下载附件
(74.01 KB)
在Project目录里面增加一个Avatar Body Bask,然后将其名称更换为Body Mask,如图所示:
2013-10-9 01:15 上传
下载附件
(39.06 KB)
将Body Mask的显示窗口内,选择人物的下半部使其成为红色,被选择的部分表示该骨架为锁定状态,也就表示在新增的动作图层内只会影响角色的上半身。
2013-10-9 01:15 上传
下载附件
(22.31 KB)
接着按下Layers右边的+号按钮新增一个动画图层。
2013-10-9 01:15 上传
下载附件
(22.42 KB)
将新增的图层更名为UpperBody,在Mask的栏位里面添加刚才建立的BodyMask,如图所示:
2013-10-9 01:15 上传
下载附件
(32.15 KB)
现在开始进行新图层的动作设置,按下右键新增三个空白的Empty,然后将其名称修改为Fire、Null、Grenade,如图所示:
2013-10-9 01:16 上传
下载附件
(59.72 KB)
按下Parameters右边的加号新增两个Bool的判断式,分别是Fire与Grenade。
2013-10-9 02:34 上传
下载附件
(60.3 KB)
选择Fire,在Motion的栏位内将设置好的Swat@firing_rifle动作文件添加进来,如图所示:
2013-10-9 02:34 上传
下载附件
(79.67 KB)
选择Grenade,在Motion的栏位内将设置好的Swat@toss_grenade动作文件添加进来,如图所示:
2013-10-9 01:16 上传
下载附件
(80.6 KB)
选择Null,按右键选择Make Transition后连接到Fire, 选取连接线,在Conditions的设置里面将条件更换为Fire、ture的选项,如图所示:
2013-10-9 02:34 上传
下载附件
(42.02 KB)
选择Null,按右键选择Make Transition后连接到Grenade, 选取连接线,在Conditions的设置里面将条件更换为Grenade、ture的选项,如图所示:
2013-10-9 01:16 上传
下载附件
(44.14 KB)
接下来,选择Fire,使用右键选择Make Transition后连接到Null, Grenade也是采用相同的方法进行连接,如图所示:
2013-10-9 01:16 上传
下载附件
(53.81 KB)
选取Fire到Null方向的连接线,在Conditions的设置里面将条件更换为 Fire、false选项。
2013-10-9 01:16 上传
下载附件
(36.12 KB)
选取Grenade到Null方向的连接线,在Conditions的设置里面将条件更换为 Exit Time、0.92的数值。
2013-10-9 01:16 上传
下载附件
(35.06 KB)
最后打开BasicController02脚本,在update()的底部加上一段控制的代码:
if(Input.GetKeyDown(KeyCode.F)){
animator.SetBool("Grenade", true);
} else {
animator.SetBool("Grenade", false);
}
if(Input.GetButtonDown("Fire1")){
animator.SetBool("Fire", true);
}
if(Input.GetButtonUp("Fire1")){
animator.SetBool("Fire", false);
}
复制代码
在上面的代码中,我们设置了按下F键即可执行投弹,如按下左键则是进行射击的动作,按下Play进行测试,使用WASD进行方向的控制,在行进的过程中按下F键则执行投弹的动作,这时可注意到士兵模型的上半身与下半部是用了不同的动作图层所结合的动作,也就实现了一边走路一边投弹的效果。
2013-10-9 02:35 上传
下载附件
(76.72 KB)
2013-10-9 02:35 上传
下载附件
(77.42 KB)
2013-10-9 02:35 上传
下载附件
(76.69 KB)
更多的Unity技术交流与分享请加入:纳金网Unity论坛专属交流群 - 218689657
Original_Character_2.zip
2013-10-9 02:13 上传
点击文件名下载附件
4.31 MB, 下载次数: 2265
作者:
ku
时间:
2013-10-9 07:49
相当不错的教程
作者:
orokborokhulu
时间:
2013-10-9 08:45
nice asset
作者:
animan
时间:
2013-10-9 10:08
感谢分享。
作者:
王者再临
时间:
2013-10-9 16:45
这个介绍很不错,知道了Layer与Mask的应用关系了
作者:
ZackD
时间:
2013-10-9 19:13
很不错的学习资料,谢谢了!
作者:
烟雨
时间:
2013-10-13 02:07
刚好需要这个Mask功能,学习一下
作者:
狂风大尉
时间:
2013-10-18 20:39
很不错的系列,支持楼主的分享
作者:
HIDEOKOJIMA
时间:
2013-10-18 21:12
感覺非常實用~
作者:
幸福小猪
时间:
2013-10-28 10:12
感谢楼主分享~
作者:
HIDEOKOJIMA
时间:
2013-10-28 12:25
感谢分享。
作者:
star-小虎
时间:
2013-10-28 15:42
谢谢分享!!!
作者:
崇尚现在
时间:
2013-11-7 23:24
谢谢了 很好啊
作者:
may
时间:
2013-11-7 23:34
Mask的用途看起来很常用到,不错
作者:
查穆1
时间:
2013-11-8 16:19
非常实用,感谢楼主分享。
作者:
PegSan_Li
时间:
2013-11-8 18:10
很好的教程,感谢分享~
作者:
likunhan
时间:
2013-11-9 16:21
受教了。非常感谢!
作者:
bluesxiao
时间:
2013-11-9 17:21
好高端好高端好高端
作者:
aaa120456
时间:
2013-11-19 16:28
还有一篇,看完就学会了,嘎嘎!
作者:
crystal7090
时间:
2013-11-19 22:28
感谢分享
作者:
titanko
时间:
2014-3-6 12:05
相当不错的教程
作者:
imwgysss
时间:
2014-3-18 09:24
感谢楼主分享~
作者:
shinach
时间:
2014-6-27 10:58
关于unity3d 接触了一个礼拜,就这个帖子看懂了。大赞
作者:
run0006
时间:
2014-7-19 08:42
感謝分享!
作者:
kensniper
时间:
2014-7-23 09:24
感谢楼主分享~ 这个貌似很容易实现上下半身分节, 移动中开枪或者释放技能。
作者:
tianhett
时间:
2015-2-13 16:50
非常不错啊。。。。。。
作者:
lelenwan
时间:
2015-11-4 21:09
感谢楼主分享~ 正在找这样的教程。
作者:
东篱下的菊花
时间:
2015-11-7 20:22
感谢楼主分享的好教材!
作者:
kensniper
时间:
2015-11-9 10:16
感谢分享感谢分享
作者:
Xalien
时间:
2016-5-25 15:51
正需要这个哪,太好了,多谢分享。
作者:
qinjuan1188
时间:
2016-6-1 13:36
感谢楼主分享~
作者:
SUPER608
时间:
2017-3-19 11:07
给楼主点个赞,很详细,但是发现一个错误,在有一篇设置动画的时候,讲往前走和往后走都设置为walking_backwords了,我当时找了好久才发现错误,不过还是很感谢楼主的教程,学到很多
欢迎光临 纳金网 (http://rs.narkii.com/club/)
Powered by Discuz! X2.5