http://www.narkii.com/club/thread-305706-1.html

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的动作,通过键盘的操作可以在场景中对角色进行前后左右与加速的控制。

有的朋友可能还注意到一个情况,就是角色在移动的过程中,如果需要进行类似投弹与射击的动作,由于角色仍然处于行进的过程,在这种情况下,用传统的动画控制方式是无法达到这种效果,此时就需要使用动画层的叠加方式来制作,而使用Mecanim系统正是一个最理想的解决方案。

接下来的部分,我们将介绍如何使用Mask功能在角色上叠加不同的动画,延续前面的Blend Trees教程,在导入附件的资源包后,打开Mixing Layers的场景,选择zModified_Character > Swat@firing_rifle文件,这是一个模拟士兵角色射击的动作。

将Rig模式切换为Humanoid,Avatar Definition选择CopyFromOtherAvatar,然后在Source里面添加SwatAvatar,按下Apply完成设置。

接着在Animations里面进行属性设置,勾选Loop Pose与Root Transform Rotation > Bake into Pose、Root Transform Position > Bake into Pose这三个选项,Base Upon分别为Body Orientation与Original,最后再按下Clamp Range完成动作的分割即可。

选择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完成动作的分割。

在Project目录里面增加一个Avatar Body Bask,然后将其名称更换为Body Mask,如图所示:

将Body Mask的显示窗口内,选择人物的下半部使其成为红色,被选择的部分表示该骨架为锁定状态,也就表示在新增的动作图层内只会影响角色的上半身。

接着按下Layers右边的+号按钮新增一个动画图层。

将新增的图层更名为UpperBody,在Mask的栏位里面添加刚才建立的BodyMask,如图所示:

现在开始进行新图层的动作设置,按下右键新增三个空白的Empty,然后将其名称修改为Fire、Null、Grenade,如图所示:

按下Parameters右边的加号新增两个Bool的判断式,分别是Fire与Grenade。

选择Fire,在Motion的栏位内将设置好的Swat@firing_rifle动作文件添加进来,如图所示:

选择Grenade,在Motion的栏位内将设置好的Swat@toss_grenade动作文件添加进来,如图所示:

选择Null,按右键选择Make Transition后连接到Fire, 选取连接线,在Conditions的设置里面将条件更换为Fire、ture的选项,如图所示:

选择Null,按右键选择Make Transition后连接到Grenade, 选取连接线,在Conditions的设置里面将条件更换为Grenade、ture的选项,如图所示:

接下来,选择Fire,使用右键选择Make Transition后连接到Null, Grenade也是采用相同的方法进行连接,如图所示:

选取Fire到Null方向的连接线,在Conditions的设置里面将条件更换为 Fire、false选项。

选取Grenade到Null方向的连接线,在Conditions的设置里面将条件更换为 Exit Time、0.92的数值。

最后打开BasicController02脚本,在update()的底部加上一段控制的代码:

  1. if(Input.GetKeyDown(KeyCode.F)){
  2. animator.SetBool("Grenade", true);
  3. } else {
  4. animator.SetBool("Grenade", false);
  5. }
  6. if(Input.GetButtonDown("Fire1")){
  7. animator.SetBool("Fire", true);
  8. }
  9. if(Input.GetButtonUp("Fire1")){
  10. animator.SetBool("Fire", false);
  11. }

复制代码

在上面的代码中,我们设置了按下F键即可执行投弹,如按下左键则是进行射击的动作,按下Play进行测试,使用WASD进行方向的控制,在行进的过程中按下F键则执行投弹的动作,这时可注意到士兵模型的上半身与下半部是用了不同的动作图层所结合的动作,也就实现了一边走路一边投弹的效果。

 
 

更多的Unity技术交流与分享请加入:纳金网Unity论坛专属交流群 - 218689657

转载于:https://www.cnblogs.com/nafio/p/9137476.html

Mecanim动画系统 - 在角色上使用Mask 叠加动画层相关推荐

  1. Flax Engine(动画系统)学习笔记(二)——动画类型

    2021SC@SDUSC 在开始分析学习有关Flax Engine的动画系统相关的源码之前,我们首先要对动画,特别是游戏当中的动画系统展开一定程度的了解,比如它是什么?有哪些类型?在游戏制作中有着什么 ...

  2. Flag Engine(动画系统)学习笔记(八)——动画混合

    2021SC@SDUSC 动画混合(animation blending) 指能令一个以上的动画片段对角色最终姿势起作用的技术.混合是把两个或更多的输入姿势结合,产生骨骼的输出姿势.比如,通过混合负伤 ...

  3. Flag Engine(动画系统)学习笔记(六)——动画片段

    2021SC@SDUSC 动画片段 游戏角色的移动必须拆分成大量小粒度的动作.这些动作为动画片段.一般一个角色动作会拆成上千个片段,但是当角色进入游戏的非互动部分是例外.这部分称为非交互连续镜头(NI ...

  4. Unity 3D 动画系统(Mecanim)|| Unity 3D 人形角色动画(Avatar)

    Unity 3D 动画系统(Mecanim) Mecanim 动画系统是 Unity 公司推出的全新动画系统,具有重定向.可融合等诸多新特性,可以帮助程序设计人员通过和美工人员的配合快速设计出角色动画 ...

  5. [Unity3D]Unity3D游戏开发之当仙剑奇侠传遇上Mecanim动画系统

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是 blog.csdn.net/qinyuanpei.博主总算赶在这个月底写出了这篇文章.这个月因为期末考试一直没时间研究太多关于技术方面的东西, ...

  6. Unity3D笔记第十六天——Mecanim动画系统

    Mecanim动画系统 Unity3D动画系统分类:    一:Unity3.5版本之前的旧的Legacy系统;    二:Unity4.0版本新增加的Mecanim动画系统. 新动画系统的优点:   ...

  7. Mecanim动画系统

    本期教程和大家分享Mecanim动画系统的重定向特性,Mecanim动画系统是Unity3D推出的全新的动画系统,具有重定向.可融合等诸多新特性,通过和美工人员的紧密合作,可以帮助程序设计人员快速地设 ...

  8. Unity 3D 导入三维模型||Unity 3D 动画系统简介(Mecanim)

    将三维模型导入 Unity 3D 是游戏开发的第一步. 下面以 3ds Max 为例,演示从三维建模软件中将模型导入 Unity 3D 的过程,具体步骤如下. 在 3ds Max 中创建房子模型. 执 ...

  9. unity 对Animator动画系统的研究

    unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看 ...

最新文章

  1. 华师大数据科学考研_2020年华东师范大学行政管理专业考研报录比、参考书目、考研经验分享...
  2. CSL-YOLO | 超越Tiny-YOLO V4,全新设计轻量化YOLO模型实现边缘实时检测!!!
  3. pat1049. Counting Ones (30)
  4. 深度学习指南:在iOS平台上使用TensorFlow
  5. 数据结构与算法 | 计数排序
  6. 2.8 计算图的导数计算
  7. 小米开源移动端深度学习框架MACE,自主研发,专为IoT设备优化
  8. MSCNN算法:饭堂人群密度检测实现
  9. 18-CSS问题-让多个div横排显示并设置间距解决方案
  10. Hibernate配置文件,映射文件
  11. 文件(视频)上传到阿里云 java实现
  12. python画正切函数_在matplotlib中绘制tan
  13. 华为海思K3平台总体特性
  14. 微波射频工程师必读经典参考书
  15. 桌面点右键,白屏怎么办
  16. Android系统体系结构
  17. 巧用阿里云同步k8s.gcr镜像
  18. 低功耗MCU的选择方法
  19. 字节终面:说说Kakfa副本状态机的实现原理?
  20. 软式棒垒球运动进校园

热门文章

  1. kill命令、killall命令、pkill 命令
  2. linux:强制踢人命令 pkill
  3. sequelize 增加数据库字段_使用Sequelize操作MySQL
  4. 安卓webview加载网页实现网页翻译
  5. 如何给博客园添加访问统计
  6. SAP ABAP基础知识总结图
  7. Windows 无法使用139端口访问共享
  8. 结构体成员非对齐访问所带来的思考
  9. Cardano携手World Mobile在非洲进行战略布局,共同推进电信事业
  10. 计概A期中复习需要整理的题目名单