Unity为人物模型 添加动效Animator

这篇具有很好参考价值的文章主要介绍了Unity为人物模型 添加动效Animator。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


1 前言

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

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

2 设计流程

2.1 基础环境搭建

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

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

咱们简单操作,就从第二个网站下载一个。
unity怎么给人物加动作,Unity,unity,动画,Anitmator
得到的是一个fbx文件。

模型拖到【Project】面板中,相当于导入了。接着,拖到Hierarchy面板中,相当于应用到场景了。
unity怎么给人物加动作,Unity,unity,动画,Anitmator

为了让人物可以跟下面下载的动画匹配,有一步非常重要的工作,如下:
unity怎么给人物加动作,Unity,unity,动画,Anitmator
Project面板,选中该模型,Inspector面板,Animation Type修改为Humanoid。这会让模型保证是人体标准的5个大骨骼。
unity怎么给人物加动作,Unity,unity,动画,Anitmator改好以后,查看该模型详细信息,即点击小三角形,可以看到一个小人物图标。

2.2 动画搭建

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

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

2.2.1 获得一组anim动画文件

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

unity怎么给人物加动作,Unity,unity,动画,Anitmator

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

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

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

然后选中模型,点击这个文件的小三角形,出来后,看到一个蓝绿色的文件没?它就是动画文件。
unity怎么给人物加动作,Unity,unity,动画,Anitmator

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

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

unity怎么给人物加动作,Unity,unity,动画,Anitmator
接下来,需要搞个动画状态机(Animator Controller),根据不同的状态来切换不同的动画了。

2.2.2 动画状态机(Animator Controller)

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

unity怎么给人物加动作,Unity,unity,动画,Anitmator
建好后,长这样。
unity怎么给人物加动作,Unity,unity,动画,Anitmator
双击它,进入了动画编辑面板:
unity怎么给人物加动作,Unity,unity,动画,Anitmator

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

好了,接下来,我们开始自定义:
在操作区,右键,Create State -> Empty。新增状态。比如idle
unity怎么给人物加动作,Unity,unity,动画,Anitmator
选择idle,在Inspector面板,Motion绑定好一个动画。例如就是我们前面得到的idle.anim
unity怎么给人物加动作,Unity,unity,动画,Anitmator

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

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

首先,先创建触发一下条件。在Anomator->Paramaters添加。
unity怎么给人物加动作,Unity,unity,动画,Anitmator
触发条件有多种。
前三种是设置值,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
这个线代表状态切换,可以有条件。如何设置条件?
点击选中这根线:
unity怎么给人物加动作,Unity,unity,动画,Anitmator
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
unity怎么给人物加动作,Unity,unity,动画,Anitmator
再从run连一根线到idle,加触发条件:Running=false

最后,把Entry连接到Idle,因为Idle为默认状态。另外,还需要让idle的动画,为循环播放,否则播放完就不动了。
unity怎么给人物加动作,Unity,unity,动画,Anitmator

至此,整体状态机的图就好了。
unity怎么给人物加动作,Unity,unity,动画,Anitmator

2.3 模型绑定动画

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

unity怎么给人物加动作,Unity,unity,动画,Anitmator
另外,如果你有按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怎么给人物加动作,Unity,unity,动画,Anitmator文章来源地址https://www.toymoban.com/news/detail-784612.html

到了这里,关于Unity为人物模型 添加动效Animator的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

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

    2024年02月11日
    浏览(38)
  • Unity Animator人物模型动画移动偏移

    模型动画出现移动方向偏移 !修改Animation中的Root Transform Rotation(根变换位置)、Root Transform Rotation(x,y,z)(旋转),Bake Info Pose修改为Original。可以解决 !!但是,使用动画移动函数时将无法移动,原因是锁定根变换位置和循环位置 !!!所以只要修改依据为原始或者微调偏离值,

    2024年02月15日
    浏览(43)
  • Unity大量人物模型,及输出FBX功能。

    提供了大量带动作的低模人物模型   如何将Unity模型输出FBX: 1.打开Window Package Manager    2.选择 Unity Registry   3. 在搜索框输入FBX,然后在右下角安装即可。 4.在Hierarchy视图中选中要导出的模型,然后右键选择Export To FBX 这样就能导出模型啦。  资源地址:https://download.csdn.ne

    2024年02月12日
    浏览(52)
  • Unity实现文字转语音并且与人物模型口型同步

    提示:这里可以添加本文要记录的大概内容: 今天我们用Unity实现文字转语音并且与人物模型口型同步,要实现这个功能,我们需要用到两个插件:语音口型同步“OVRLipSync”和文字转语音“RTVoice”。 RTVoice: 离线文字转语音 • 支持所有构建平台! • 适合于 Windows、macOS、

    2024年02月05日
    浏览(40)
  • 【unity游戏开发教程】Unity+Umotion Pro+VRoid+Blender制作人物模型和动画,在unity中简单制作二次元人物动画

    大家好!本期教程教大家在unity中制作二次元人物模型和动画 1.下载VRoid Studio 1.搜索VRoid Studio下载即可,或者前往官网VRoid官网 VRoid Studio是由pixiv开发的一款3D人物建模软件,VRoid的主要特征就是通过类似绘画的方式进行人物的建模,使人们更为轻松地创造自己的虚拟人物。

    2024年02月10日
    浏览(54)
  • 基于mediapipe的动作捕捉和unity的人物模型驱动

    实习的时候做的一个虚拟动作捕捉和人物驱动的项目,里面可分析的知识还是比较多的,主要是我还没用过unity,这软件花了半个月才熟悉起来。先看一下人物驱动的效果,可能看着有些卡,第一是我开了那个屏幕录像,还有一个是加了手指部分关键点的识别,所以帧率就下

    2024年02月05日
    浏览(44)
  • 游戏人物下载—Pmx模型转Fbx并在Unity中使用

    Blender官网 点击LTS版本 选择官方下载地址 选择2.83LTS版本,3.0以后的版本会出现贴图错误的情况 下载完一路安装就是,安装完打开 语言选中文 Cats插件Git地址 下载好的压缩包 打开Blender,点击编辑-偏好设置 点击:插件–安装 选择下载的Zip文件,安装 安装完成后再次打开偏好

    2024年02月04日
    浏览(78)
  • unity背景缓动动效

       这算是一个很常见的小功能,比如我们在玩横版游戏的时候,背景动画会以一定的频率运动,其实现方式也有很多种。   比如,使用UGUI的image+animtion动画的方式,自己k桢实现。   还可以使用材质球本身的功能来实现,关键函数如下:    配合的材质球如下:

    2024年02月16日
    浏览(28)
  • Unity UI动效 - Toggle切换动画

    如下图所示,当 Toggle 的 OnValueChanged 事件执行时,会播放相应的切换动画,该功能可以通过 Animation Editor 编辑帧动画来实现,而本文介绍如何通过代码实现。 为Toggle添加值变更事件: 动画的切换过程在协程中实现,当值变更时,判断当前若正在运行协程,将其终止,然后开

    2024年02月04日
    浏览(46)
  • 【Unity】实用功能开发(一)实现在UI中用RawImage实时展示3D模型(背景透明,并通过UI防止3D场景遮挡)并可以通过分层完成:游戏中的人物状态展示界面,小地图,人物实时头像状态等功能

    有时由于项目效果需要,部分功能的实现受到阻碍,这里收集一些已实现的思路和方法,每次会记录大致需求和遇到的问题,如果有更好的想法,欢迎评论区讨论!!! 目录 功能描述: 需求描述: 实现步骤: ①为需要展示的内容区分层级: ②在场景中添加一个摄像机,并

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包