码字不易,转载请注明出处^ o ^


1 前言

Unity导入一个人物模型后,一般还需要让它动起来。并且,还需要有一定的状态管理,比如按A键就做跑的动作,按B键就做打人的动作,等等。
本文就从无到有,讲一下如何快速导入一个人物模型,然后动起来。

本文着重讨论的是人物模型,因为这种模型的动效,可以从网站下载,不需要自己设计!
这个网站就是https://www.mixamo.com/#/
这是Adobe旗下的一款产品,可以免费上传静态模型文件,绑定动画调试,并下载,很良心。不过我们不需要这个功能,我们只想从它那下载动画文件,自己使用。

2 设计流程

2.1 基础环境搭建

首先,创建一个新的Unity工程。打开后,是一个干净的场景:
然后呢,搞一个平板,作为地面。
然后呢,搞个模型进来。
有很多网站。我这里推荐2个。

  1. https://free3d.com/zh/3d-models/ 这个模型丰富,带纹理。
  2. https://www.mixamo.com/#/ 这个主要目的是下载动画文件,下载的同时,模型也给你了,不过模型没有纹理,俗称【白模】

咱们简单操作,就从第二个网站下载一个。

得到的是一个fbx文件。

模型拖到【Project】面板中,相当于导入了。接着,拖到Hierarchy面板中,相当于应用到场景了。

为了让人物可以跟下面下载的动画匹配,有一步非常重要的工作,如下:

Project面板,选中该模型,Inspector面板,Animation Type修改为Humanoid。这会让模型保证是人体标准的5个大骨骼。
改好以后,查看该模型详细信息,即点击小三角形,可以看到一个小人物图标。

2.2 动画搭建

先说一下动画系统的核心概念。新版本的Unity,搞动画需要2个东西,AnimatorAnimator Controller

  1. Animator,动画。如跑,跳,举手,各自是一个动画。文件后缀.anim。可以从网站下载,当然,你也可以自己设计。
  2. Animator Controller,动画控制器。文件后缀,.controller。打开是一个图形化的状态机,可以控制多个动画。一般自己创建。

2.2.1 获得一组anim动画文件

动画自己编辑,太费事了,我们可以从网上下载来,直接应用到模型上!
下载地址:
https://www.mixamo.com

你可以搜索不同的状态,如run, attack, dead,jump,idle,等等。然后下载下来。

下载的不是纯粹的动画文件,而是一个fbx文件,包含了模型本身,每个模型包含一种动作。所以我们还需要提取一下。

下载后,先把fbx导入到Unity中,然后,需要像2.1节说的,把Animation Type改为Humanoid。这样,动画类型也能保证是以人体的标准形式展现。

然后选中模型,点击这个文件的小三角形,出来后,看到一个蓝绿色的文件没?它就是动画文件。

选中它,然后Ctrl + D,或者菜单栏的Edit -> Duplicate,就可以把动画提取出来。提取出来后,同级文件夹下,就多了一个后缀为anim的文件,可以改一下名字,比如叫idle.anim

好了,接下来继续,一顿操作猛如虎,下载N个模型,提取N种动画,
把这些都放到一个文件夹下。这些就是你想要的所有动作了。


接下来,需要搞个动画状态机(Animator Controller),根据不同的状态来切换不同的动画了。

2.2.2 动画状态机(Animator Controller)

在Project面板,Animiation目录下(目录随便你,建议和2.2.1的动画文件放在一起)。右键,Create -> Animation Controller


建好后,长这样。

双击它,进入了动画编辑面板:

默认3种。
Any State:表示任意状态的特殊状态。
Entry:表示状态机的入口状态。组件被激活后无条件跳转到该状态,一般需要把它连到我们自定义的默认态,如Idle
Exit:表示状态机的出口状态。如果动画控制器只有一层,那么这个状态没有用。如果有多层,需要从子状态机中返回到上一层(Layer)时,把状态指向Exit就可以了。本文是不需要用到。

好了,接下来,我们开始自定义:
在操作区,右键,Create State -> Empty。新增状态。比如idle

选择idle,在Inspector面板,Motion绑定好一个动画。例如就是我们前面得到的idle.anim

同理创建好run,attack, dead3种状态。
接下来,我们开始定义状态之间如何切换。
目标:

  1. 任何状态下,可以触发attackattack一次后,自动进入idle
  2. 任何状态下可以触发dead,之后,无法进入其他状态
  3. idle状态下,可以触发runrun可以触发idle

首先,先创建触发一下条件。在Anomator->Paramaters添加。

触发条件有多种。
前三种是设置值,float, Int, bool。在脚本,可以配置值来触发动画。
例如bool可以这样触发:

gameObj.GetComponent<Animator>().SetBool("Is_move", true);

还有一种Trigger,类似于单选框,代码中这样触发:

gameObj.GetComponent<Animator>().SetTrigger("Attack");

接下来,按前面的3个目标,分别讨论。

(1) 任何状态下,可以触发attack,attack一次后,自动进入idle。

选中AnyState,右键,Make Transition。出来一条线,连接到attack
这个线代表状态切换,可以有条件。如何设置条件?
点击选中这根线:

Inspector面板,最下面,Conditions,添加条件。
咱们就前面配置的一个触发条件Attack
这样,只要代码中执行:

gameObj.GetComponent<Animator>().SetTrigger("Attack");

该游戏对象,都会从任意状态,进入攻击状态。

还有一件事,attack一次后,自动进入idle。这个简单,直接连一根线,到Idle不加任何触发条件,就可以实现。Attack执行一次,就会进入Idle

(2) 任何状态下可以触发dead,之后,无法进入其他状态

首先,像(1)一样,从AnyState连一根线到Dead。然后加一个Trigger类型的触发条件,如Dead
因为Dead后啥也干不了了,所以Dead不需要连到其他地方。

(3) idle状态下,可以触发run,run可以触发idle

先搞一个Bool类型的触发条件,名字叫Running
然后,Idle连一根线到run。加触发条件Running=true

再从run连一根线到idle,加触发条件:Running=false

最后,把Entry连接到Idle,因为Idle为默认状态。另外,还需要让idle的动画,为循环播放,否则播放完就不动了。

至此,整体状态机的图就好了。

2.3 模型绑定动画

把模型对象,添加一个Animotor组件。
把Controller,设置为前面写的.controller状态机。


另外,如果你有按2.1节说的,Animation Type修改为Humanoid,则Avatar会有个默认值,如果为空,则说明你没改好,会有问题的。

至此,运行起游戏,不带任何代码,动画就会执行了,默认一直显示idle的那个动画。

如果要动态切换,就需要加一点脚本了。

2.4 脚本切换动画

这个就比较简单了。先写个脚本如下。

public class AvatarController : MonoBehaviour
{public void DoRun() {this.gameObject.GetComponent<Animator>().SetBool("Running", true);//TODO 也可以同时修改transform.position来实际调整距离
}public void DoAttack() {this.gameObject.GetComponent<Animator>().SetBool("Running", false);this.gameObject.GetComponent<Animator>().SetTrigger("Attack");
}public void Stop() {this.gameObject.GetComponent<Animator>().SetBool("Running", false);
}
}

然后UI上加3个按钮,绑定这3个函数。

效果如下:

Unity为人物模型 添加动效Animator相关推荐

  1. [Unity动画]给人物模型添加简单的动画

    给unity人物模型添加动画,首先你得有个模型,在预制体中,有导入设置,重点是Rig设置.第一个选项是动画的类型,因为导入的是人物模型,所以应该选择人形:第二个是人物骨骼,这里已经设好了:第三个选项是 ...

  2. Unity大量人物模型,及输出FBX功能。

    提供了大量带动作的低模人物模型 如何将Unity模型输出FBX: 1.打开Window >Package Manager 2.选择 Unity Registry 3. 在搜索框输入FBX,然后在 ...

  3. unity 动画 人物模型下沉的可能情况

    为游戏对象加上动画状态机,运行后人物模型下沉 因为要选取人物站立的动画,我从美工给的动画中截取 strat end相等的动画 箭头指向这两个值相等,发现Anmiator执行到该状态时人物模型下沉(不是 ...

  4. Unity Live2D 让模型自己动起来 Harmonic Motion Controller 学习使用

    环境: Unity 2019.4.0f1 CubismSdkForUnity-4-r.1 阅读这篇文章可以让你知道:如何让模型 身体自己动起来 --就像这样 Harmonic:谐波 这个组件可以让物体 ...

  5. html 制作人物模型,3dsmax动漫人物制作教程

    回答: 一.首先查看模型的最终效果图.如图LM1所示. 图LMmdash;1 二.再看看最终的模型图,如图LM-2所示. 图LMmdash;2 三.模型分析: 1.模型分成两部分,不管是六角形或是八角 ...

  6. unity人物模型换装系统浅析

    *****最近研究了一下unity中人物模型的换装系统感觉挺有意思的!特意来分享给大家.*****首先给大家介绍一下3D人物模型的相关知识:模型一般分为静态模型和动态模型嘛!静态模型简单的来说就是不会 ...

  7. 想让照片中的云飘起来?视频编辑服务一键动效3步就能实现

    分享和创作短视频已经成为人们记录美好生活的一种方式,很多用户在剪辑时会出现素材不够的情况,这时往往会选择用几张图片作为补充素材.但是视频中穿插图片又会让作品中的过渡部分显得十分生硬和刻意:那么怎样通过 ...

  8. 掌握动效设计!让你的设计富有未来科技感(上)

    为何有的产品.服务特别受欢迎? 是因为这些产品.服务在内容.外观.设计.可用性.功能等方面具有无可匹敌的优势.其实,所有的这些层面都属于交互设计的细节,其中一个关键点便是动效. 本文将介绍几种常见的动 ...

  9. 为什么墨刀的动效这么酷炫?学会神奇移动,你也可以

    神奇移动效果在实际的交互随处可见,比如手机相册.水波纹效果等.那么这种效果是怎么做出来的呢? 分享一下我在墨刀设计原型时添加动效的经验大家一起交流学习哈 (带神奇移动效果) (不带神奇移动效果) 一. ...

  10. 暗夜发光,独自闪耀,盘点网页暗黑模式(DarkMode)下的特效和动效,CSS3实现

    众所周知,网页的暗黑模式可以减少屏幕反射和蓝光辐射,减少眼睛的疲劳感,特别是在夜间使用时更为明显.其实暗黑模式也给霓虹灯效应(Neon Effect)提供了发挥的环境. 霓虹灯效应是一种视觉效果,其特 ...

最新文章

  1. SSL之CA证书颁发机构安装图文详解
  2. php组合查询,PHP组合查询多条件查询实例代码第1/2页
  3. [2020多校A层12.1]树(倍增/单调栈/dfs栈)
  4. 动态定时任务数据库获取方式
  5. 电子科学与技术相关索引汇总
  6. 别再只盯着国外!在集设发现了优秀设计师原创作品!
  7. 计算机网络学习笔记(26. Web缓存技术)
  8. 到底是微信窃取隐私,还是输入法光明正大收集用户信息?
  9. 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)
  10. for 循环 and while 循环(四)
  11. Linux 4.21优化Zen 2架构
  12. 双非二本院校,北京211,字节跳动 → 一个新秀的六年
  13. 新型K4宏病毒代码分析报告
  14. slk文件转wma_什么是WMA文件(以及如何打开一个文件)?
  15. 星际文件系统(InterPlanetary File System,缩写IPFS)
  16. 帮助新员工快速形成战斗力,Filez在入职与培训场景应用
  17. JDBC-使用Statement操作数据库的弊端
  18. 锐龙9 7845HX 和锐龙9 6900HX选哪个 r9 7845HX 和6900HX差距
  19. iPhone Plus手机的分辨率到底是多少,是1080×1920还是1242×2208?
  20. 水平集——那些我膜拜过的牛人2

热门文章

  1. Etcher 改变一个选项,让所有盘符都乖乖出来
  2. 通俗易懂奈奎斯特定理和香农定理
  3. DOS操作系统基本使用方法
  4. 推荐系统技术演进趋势:召回->排序->重排
  5. MR-GMMapping:基于高斯混合模型的通信高效多机器人映射系统
  6. hdu 4399 树形dp
  7. [Vue]缓存路由组件 activated()与deactivated()
  8. 计算机不显示验证码,浏览器中网页验证码不显示的原因与解决办法
  9. iOS-QQ分享功能实现
  10. 移动端300ms延迟的由来及解决方案