这两天学习了动画系统,接下来学习物理引擎和粒子特效!

每日一句:你只管自信,其他的交给别人来说

目录

Mecanim动画系统

新特性

常用名词:

步骤:

模型动画的导入

Animator动画状态机

Mecanim BlendTree(混合树)

Mecanim BlendTree2D

Mecanim层设置(Layer)

动画事件

判断动画是否在播放


Mecanim动画系统

新特性

·针对人性角色提供了一种特殊的工作流,包含Avatar的创建和对肌肉的调节

·动画重定向(Retargetina)的能力,可以非常方便地把动画从一个角色模型应用到其他角色上

·提供了可视化Animator视窗,可以直观地通过动画参数和Transition(动画过度线)等管理各个动画间的过度

常用名词:

Animator Mecanim动画系统动画组件

AnimatorCotorller  动画状态机(控制机)

Avatarˈævətɑː(r)/ Meccanim可识别的骨骼

Retargeting  角色之间动画的互用

步骤:

1.选择到模型源文件查看,修改Animation Type(动画样式)

【Model

Scale Factor 0.01模型比例因数

Rig

Animation Type(动画样式)Legacy默认—Animation、Generic非人型、Humanoid人型

Avatar Definition  Avatar定义,用来创建骨骼映射】

2.Apply应用后自动生成Animator组件、Avatar

【Animator组件APPly Root Motion属性 是否对位置、旋转产生影响】

3.Configure 若为√显示,则骨骼匹配成功,若为×,则需要重新匹配

【单击Configure按钮,进入Avatar配置界面

Mapping骨骼映射  Muscles Settings肌肉设置(一般默认)】

4.创建状态机Creat—>Animator Controller,拖入到

5.找到Window—>Animator面板(或双击状态机),把动画拖到面板

模型动画的导入

【Animation

Loop Time循环播放片段

Bake Into Pose 只进行动画,不会对旋转、位置产生影响

Loop match 首尾属性没有发生变化】

Animator动画状态机

动画参数parameters  当满足什么条件进行动画衔接

脚本:找组件+为切换条件赋值

private Animator anim;

void Start()

{anim=this.GetComponent<Animator>();}

private void Update()

{if(anim)

 { anim.SetFloat=Input.GetAxis(“WSFloat”,Vertical);}正向返回1,负向返回-1,不按返回0

只要不按键“WSFloat”值为0,按W键,慢慢增长为1,过程中会出现大于0.1的情况,切换动画,松开键值回到0

【或】

【并且】

【仅供参考,此图有待完善】

public class BehaviourScript1 : MonoBehaviour{private Animator anim;private void Start(){anim = this.GetComponent<Animator>();}private void Update(){if(anim!=null){anim.SetFloat("ADFloat", Input.GetAxis("Horizontal"));anim.SetFloat("WSFloat", Input.GetAxis("Vertical"));anim.SetBool("ShiftBool", Input.GetKeyDown(KeyCode.RightShift));anim.SetBool("SpaceBool", Input.GetKeyDown(KeyCode.Space));}}}

Mecanim BlendTree(混合树)

对两个或更多个相似的运动进行混合,可实现一个动画状态有多个动画效果

1.Animator Controller视图右键

Create State—>From New Blend

2.双击进入混合树视图(双击空白部分可回去)

[混合树动画参数]

3.在Inspector面板中Add Motion Field

[可自定义]

[前后左右跑]

private void Update()

{

if(anim!=null)

{

anim.SetFloat("ADFloat", Input.GetAxis("Horizontal"));

anim.SetFloat("WSFloat", Input.GetAxis("Vertical"));

}

}

Mecanim BlendTree2D

通过2个动画参数控制动画切换

Blend Type:2D Freeform Directional

[Mecanim BlendTree2D]

[2个动画参数]

Mecanim层设置(Layer)

用于动画混合效果(如边跑步边攻击)

【不同的骨骼位置有不同的动画表现效果(攻击只动上半身,把上半身骨骼遮罩住)】

Animator Layers +:

添加层,通过Weight设置动画权重

【weight权重,指某个动画层在整个动画中的影响

0为此层动画与整个动画完全不融合

1为此层动画与整个动画融合】

Mask控制动画混合位置,并将此层需要的动画拖到面板中

Create—>Avatar Mask

[Avatar Mask 攻击只动上半身,就把上半身遮罩住了]

SetLayerWeight(int LayerIndex,float weight)

加一个空的动画,以免造成这个层权重到1了,播到一半接着播

动画事件

找到源文件—>找到需要的动画,用事件调用方法

(当播放攻击动画,对方有减血效果……)

Events 添加事件

 

[Function 方法  Float,Int,String,Object传入的参数]

到某一时刻,给角色换装

void Changecloth(Texture cloth)

{this.GetComponentInChildren<Renderer>().material.mainTesture=cloth;}

Any State  可以从任意状态切换过去,但不能切换回来

public class DieBehaviourScript1 : MonoBehaviour{private Animator anim;public int score = 5;private bool dieBool = true;// Start is called before the first frame updatevoid Start(){anim = this.GetComponent<Animator>();}// Update is called once per framevoid Update(){if(Input.GetKeyDown(KeyCode.Space)){if (score > 0)score -= 1;}}//动画切换private void AnimFunc(){if(anim!=null&&dieBool)//因为在Update里调用的,给个bool,不让一直调{anim.SetBool("DieBool", score <= 0);}}public void DieEvent(){anim.SetBool("DieBool", false);dieBool = false;}}

Animator Override Controller 继承状态机

判断动画是否在播放

Animator anim;int idel=Animator.StringToHash(“Base layer.Idle”);AnimatorStateInfo  currentBaseStage;//当前播放的动画void Start(){anim=GetComponent<Animator>();}void Update(){ currentBaseStage=anim.GetCurrentAnimatorStateInfo(0);//当前播放的动画if(currentBaseStage.nameHash==idle&&!anim.IsInTransition(0))//正在播放待机动画,并且没有动画衔接{anim.SetBool(“hit”,false);}

Unity—Mecanim动画系统相关推荐

  1. Unity Mecanim动画系统 之 动画层(Layers)和 动画遮罩(Avatar Mask)的简单使用

    Unity Mecanim动画系统 之 动画层(Layers)和 动画遮罩(Avatar Mask)的简单使用 目录 Unity Mecanim动画系统 之 动画层(Layers)和 动画遮罩(Ava ...

  2. Unity Mecanim动画系统 之 IK(Inverse Kinematics即反向动力学)的相关说明和简单使用

    Unity Mecanim动画系统 之 IK(Inverse Kinematics即反向动力学)的相关说明和简单使用 目录 Unity Mecanim动画系统 之 IK(Inverse Kinemat ...

  3. Unity Mecanim动画系统 之 动画混合树(Blend Trees)的简单使用

    Unity Mecanim动画系统 之 动画混合树(Blend Trees)的简单使用 目录 Unity Mecanim动画系统 之 动画混合树(Blend Trees)的简单使用 一.简单介绍 二. ...

  4. Unity Mecanim 动画系统简介

    目录 前言 正文 1. Animator 组件 2. 创建 AnimatorController 3. 创建新状态 4. 状态切换 Has Exit Time: 前言 Mecanim是Unity提供第 ...

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

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

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

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

  7. Unity4.0的新的角色动画系统——MecAnim动画系统

    Unity希望逐步淘汰掉"Legacy animation system"(即4.0以前的版本所使用的动画系统),并将其合并到Mecanim动画系统中.所以建议做新游戏的时候尽量使 ...

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

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

  9. Unity进阶 - 动画系统 - 给人物角色制作动画

    Unity进阶 - 动画系统 - 给人物角色制作动画(点击免费试学本节) 上一篇文章,我们对Unity进阶 - 动画系统 - Mecanim动画系统有了一定的认识,本节课我们给人员角色制作一些简单的动 ...

最新文章

  1. kill_mysql_sleep_thread
  2. [置顶]       编写自己的JQUERY插件
  3. Factories Gym - 102222G(2018宁夏邀请赛暨2019银川icpc网络预选赛)
  4. keepalive日志_12.日志收集项目-数据流图以及nginx安装
  5. .NET MVC异步调用中的Session问题
  6. asp服务器_Asp.Net Core2.2从环境配置到应用建立
  7. SegIntersect
  8. 深度学习笔记_卷积神经网络参数计算
  9. 人工智能案例:车厂特斯拉的花式AI应用...
  10. 移动硬盘拒绝访问问题解决方法
  11. C语言实现简单电子通讯录
  12. 理财产品的收益率也抵不上通货膨胀
  13. 第八节课-深度学习软件
  14. K-th Largest Value
  15. 揭开docker的神秘面纱?镜像制作
  16. 转自g+,一个有意思的故事
  17. Facebook广告投放:WC广告的优点和缺点
  18. Google还能做什么?(转贴)
  19. 布城:马来西亚新行政中心的崛起之路
  20. 优秀测试工程师成长之路:对软件测试的误解

热门文章

  1. 温暖的光,坚定的飞翔
  2. 工行华虹U盾在Vista和IE7下的解决方案
  3. 网页中引入网易云音乐,贴边隐藏
  4. a 标签的 target 属性、描点链接
  5. 如何下载mysql补丁_如何获取Oracle的补丁通告信息以及下载补丁
  6. 建模大佬们都不外传的3D max游戏建模神操作技巧
  7. 视频突破500播放量的神操作秘密
  8. day05循环结构while循环嵌套控制条件语句方法(函数)
  9. 破天荒!苹果终于对 MacBook Air 大更新,还有全新 iPad Pro 和 Mac mini
  10. htc 8x android,HTC 8X正式发布 4.3寸屏支持NFC