[Unity3D]Unity4全新的动画系统Mecanim
Unity4.X添加一个新的动画系统,以取代原有的3.X旧的动画系统,全新的动画系统Mecanim是官方推荐,它使我们能够写更少的代码实现连续动画。
效果图
Unity3.X中动画系统播放动画
使用播放play()或淡入淡出播放CrossFade()
比如:
animation.Play("name");
animation.CrossFade("name");
也能够做成队列动画。然后播放,比如:
animation.PlayQueued("name");
animation.CrossFade("name1");
代码实现倒序播放
animation.Play(clip1);
animation[clip1].speed = animationspeed * -1.0;
老的动画系统要实现一个连续的队列动画。是要通过代码来进行逻辑控制,而在新的动画系统中,要实现这一功能将很方便。比如要依据玩家连续点击button的次数来实现一系列动作的组合动画。
比如:
站立动画->攻击1。
。。攻击N->站立动画
这之间能够有N个连续动画的组合,能够依据用户点击button的频率来推断执行到第几个连续的动画。
如图,一般导入的动画模型都是原始模型没有动画,然后是动画模型,每个动画模型都依赖原始模型,命名后面+@name。相应的状态动画。
unity4.X版本号还保留了原始动画系统,将模型拖放到Hierarchy视图中没有Animation组件而是Animator组件。假设你还想用老的动画系统。就要切换动画的类型Rig->Animation Type->Legacy
Unity4.X中动画系统播放动画
假设我们要让模型改成新动画系统的类型。我们最好用工具,让程序来批量改变模型的类型,建议放在Editor下。
using UnityEditor; public class MyEditor : AssetPostprocessor { public void OnPreprocessModel()
{
ModelImporter modelImporter = (ModelImporter)assetImporter;
modelImporter.animationType = ModelImporterAnimationType.Human;
}
}
然后将模型拖放Project下。会发现模型的类型会自己主动改动成Humanoid格式,这样的格式通常是人物模型选择该格式。
创建模型的匹配骨骼文件。点击Configure能够预览骨骼。
节约资源起见。其它模型就由这个avatar copy一下就可以。
创建动画控制器AnimatorController
Project->Create->AnimatiorController。然后讲模型的Animator下的Controller属性赋值这个动画控制器
然后打开菜单条的Window->Animator,将动画文件拖放到Animator中,黄色箭头代表根动画。右击选择Set As Default能够设置为根动画,选择Make Transition能够连接下一个动画节点。
每一条连接线都是一个状态,能够通过左下角的Parameters面板加入Bool变量来控制连接线是否连通。从而来改变模型的动画。
设置连接线的连通条件,点击某一条线。然后在Inspector->Conditions选择Parameters里面的Bool值。而且设置它的默认连通状态是ture还是false。
代码实现人物从等到状态、跑步状态、行走状态的两两状态切换:
using UnityEngine;
using System.Collections;
//Created By Aladdin http://blog.csdn.net/dingxiaowei2013/article/details/36911203 public class AladdinScript : MonoBehaviour { public Transform transform;
//GUILabel
public GUIContent[] GUIContents;
//动画控制器
private Animator animator;
//当前状态
private string currentState = ""; //获取动画控制器
void Start () {
animator = transform.GetComponent<Animator>();
} void OnGUI()
{
GUILayout.BeginVertical("box");
for(int i = 0;i<GUIContents.Length;i++)
{
//假设点击了某个状态的button
if (GUILayout.Button(GUIContents[i]))
{
currentState = GUIContents[i].text;
} AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
//从Wait->Walk
if (stateInfo.IsName("Base Layer.wait") && currentState.Equals("Walk"))
{
animator.SetBool("WaitToWalk", true);
}
//从Walk->Wait
else if (stateInfo.IsName("Base Layer.walk") && currentState.Equals("Wait"))
{
animator.SetBool("WaitToWalk", false);
}
//从Wait->Run
else if (stateInfo.IsName("Base Layer.wait") && currentState.Equals("Run"))
{
animator.SetBool("WaitToRun", true);
}
//从Run->Wait
else if (stateInfo.IsName("Base Layer.run") && currentState.Equals("Wait"))
{
animator.SetBool("WaitToRun", false);
}
//从Walk->Run
else if (stateInfo.IsName("Base Layer.walk") && currentState.Equals("Run"))
{
animator.SetBool("WalkToRun", true);
}
//从Run->Walk
else if (stateInfo.IsName("Base Layer.run") && currentState.Equals("Walk"))
{
animator.SetBool("WalkToRun", false);
}
}
}
}
执行效果图如上图所看到的。
欢迎关注我的微博
点击下载project
==================== 迂者 丁小未 CSDN博客专栏=================
MyBlog:http://blog.csdn.net/dingxiaowei2013 MyQQ:1213250243
Unity QQ群:375151422 cocos2dx QQ群:280818155
====================== 相互学习,共同进步 ===================
[Unity3D]Unity4全新的动画系统Mecanim的更多相关文章
- Unity 4.0 中的新动画系统——MecAnim
分享一个文档资料,关于动画系统的,版本应该很老了,但是有借鉴意义的: Unity 4.0 已于 2012 年 11 月 15 日正式发布,Unity 每一次版本的提升,都给游戏开发者带来惊喜,这一次也 ...
- [原]Unity3D深入浅出 - 新版动画系统(Mecanim)
Mecanim概述: Mecanim是Unity提供第一个丰富而复杂的动画系统,提供了: 针对人形角色的简易的工作流和动画创建能力 Retargeting(运动重定向)功能,即把动画从一个角色模型应用 ...
- Unity笔记 英保通 Unity新的动画系统Mecanim
Mecanim动画系统是Unity独一无二.强大灵活的人物动画系统.该系统赋予您的人类和非人类人物令人难以置信的自然流畅的动作,使它们栩栩如生.游戏中角色设计提高到了新的层次,在处理人类动画角色中可以 ...
- Unity 动画系统(Mecanim) 术语及翻译 表格
原文 翻译 Animation Clip 视频片段 Avatar 阿凡达 Retargeting 重定向 Rigging 绑定 skinning 蒙皮 Animator Component 动画组件 ...
- Unity 动画系统(Mecanim)的组成结构
三部分: Model Rigging(直译传动装置,术语翻译绑定)(连接Model与Animations) Animations
- Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统
Mecanim简介 Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能: 针对人形角色提供一套特殊的工作流. 动画重定向的能力,可以非常方便的把动画 ...
- [Unity3D]Unity3D圣骑士当游戏开发商遭遇Mecanim动画系统
大家好.我是秦培.欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 博主总算赶在这个月底写出了这篇文章.这个月由于期末考试一直没时间研究太多关于技术方面 ...
- 解决Unity3d 4.3 动画系统带来的烦恼
近期有非常多同学问我关于unity3d 4.3更新之后动画系统和曾经不一样了,并且之前用的非常熟练的创建动画和修修改画非常多操作都不好用了,那么在这里和大家分享一下三杀的个人经验,方便大家使用unit ...
- 【Unity】第10章 Mecanim动画系统
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种动画系统:一种是早期版本提供的旧版(Legacy)动画系统,旧版本(Legacy)以后将逐步被淘汰掉 ...
随机推荐
- Lucene.Net 2.3.1开发介绍 —— 三、索引(七)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(七) 5.IndexWriter 索引这部分最后讲的是IndexWriter.如果说前面提到的都是数据的结构,那么IndexWriter ...
- HDU 4166 & BNU 32715 Robot Navigation (记忆化bfs)
题意:给一个二维地图,每个点为障碍或者空地,有一个机器人有三种操作:1.向前走:2.左转90度:3.右转90度.现给定起点和终点,问到达终点最短路的条数. 思路:一般的题目只是求最短路的长度,但本题还 ...
- Windbg 32位版本和64位版本的选择
习惯了Vsiual Studio的兄弟们可能会因为先入为主的原因以为所有的调试器都应该像它那样,其实不然,当你安装Debugging Tools for Windows的时候,你将发现有两个系列的工具 ...
- Servlet API中文版
基本类和接口 一.javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理 ...
- 例3.1 猜猜数据结构 UVa11995
1.标题叙述性说明:点击打开链接 2.解题思路:据来推測一种可能的数据结构,备选答案有"栈,队列.优先队列".结果也可能都不是或者不确定. STL中已经有这三种数据结构了,因此直接 ...
- abap alv multiple header using write
A standard SAP ALV list report will show only one line header, but there will be a requirement somed ...
- Google 搜索的基本语法
★搜索引擎的选择 先简单说一下"搜索引擎的选择". 在咱们天朝,Google 屡屡被 GFW 骚扰,导致百度占了便宜,成为份额最高的搜索引擎.不过今天这篇教程,俺还是继续拿 Goo ...
- c 可变参数 定义可变参数的函数
定义可变参数的函数,需要在stdarg.h头文件中定义的va_list类型和va_start.va_arg.va_end三个宏. 定义可变参数函数 va_list ap; //实际是定义一个指针va ...
- newlisp 注释生成文档
最近写了一个newlisp_armory库,用来实现一些newlisp自身不支持的操作.比如跨windows和ubuntu的目录拷贝功能等. 自己用的时候,发现没有API reference文档参考, ...
- birt报表报错, There is no report design object available.org.eclipse.birt.report.exception.ViewerExcepti
报错信息例如以下: - There is no report design object available. org.eclipse.birt.report.exception.ViewerExce ...