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的更多相关文章

  1. Unity 4.0 中的新动画系统——MecAnim

    分享一个文档资料,关于动画系统的,版本应该很老了,但是有借鉴意义的: Unity 4.0 已于 2012 年 11 月 15 日正式发布,Unity 每一次版本的提升,都给游戏开发者带来惊喜,这一次也 ...

  2. [原]Unity3D深入浅出 - 新版动画系统(Mecanim)

    Mecanim概述: Mecanim是Unity提供第一个丰富而复杂的动画系统,提供了: 针对人形角色的简易的工作流和动画创建能力 Retargeting(运动重定向)功能,即把动画从一个角色模型应用 ...

  3. Unity笔记 英保通 Unity新的动画系统Mecanim

    Mecanim动画系统是Unity独一无二.强大灵活的人物动画系统.该系统赋予您的人类和非人类人物令人难以置信的自然流畅的动作,使它们栩栩如生.游戏中角色设计提高到了新的层次,在处理人类动画角色中可以 ...

  4. Unity 动画系统(Mecanim) 术语及翻译 表格

    原文 翻译 Animation Clip 视频片段 Avatar 阿凡达 Retargeting 重定向 Rigging 绑定 skinning 蒙皮 Animator Component 动画组件 ...

  5. Unity 动画系统(Mecanim)的组成结构

    三部分: Model Rigging(直译传动装置,术语翻译绑定)(连接Model与Animations) Animations

  6. Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统

    Mecanim简介 Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能: 针对人形角色提供一套特殊的工作流. 动画重定向的能力,可以非常方便的把动画 ...

  7. [Unity3D]Unity3D圣骑士当游戏开发商遭遇Mecanim动画系统

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

  8. 解决Unity3d 4.3 动画系统带来的烦恼

    近期有非常多同学问我关于unity3d 4.3更新之后动画系统和曾经不一样了,并且之前用的非常熟练的创建动画和修修改画非常多操作都不好用了,那么在这里和大家分享一下三杀的个人经验,方便大家使用unit ...

  9. 【Unity】第10章 Mecanim动画系统

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种动画系统:一种是早期版本提供的旧版(Legacy)动画系统,旧版本(Legacy)以后将逐步被淘汰掉 ...

随机推荐

  1. MFC的消息反射机制

    1.消息反射解释: 父窗口将子窗口发给它的通知消息,首先反射回子窗口进行处理(即给子窗口一个机会,让子窗口处理此消息),这样通知消息就有机会能被子窗口自身进行处理. 2.MFC中引入消息反射的原因: ...

  2. Delphi与Vista提供的UAC控制(1-代表资源编号,24-资源类型为RTMAINIFEST,最后用brcc32编译成资源文件)

    Vista提供的UAC机制,是Vista的新增功能之一.它的主要目的是防止对于操作系统本身的恶意修 改.如果想对于Vista的 系统设置进行改动,必须通过UAC的验 证才能够进行.通过这样的手段,大大 ...

  3. Sql Server中COUNT(字段名)跟COUNT(*)的特殊不同点

    今天有个需求,有2张表: 1.一个“搜索记录”表search,一个“搜索后下载记录”表down 2.映射关系:每一个下载记录对应一条搜索记录,                           第个 ...

  4. jquery clone方法

    引用自http://www.w3school.com.cn/tiy/t.asp?f=jquery_manipulation_clone <html> <head> <sc ...

  5. Java Web Services (0) - Overview

    前言第1章 Web服务快速入门 1.1 Web服务杂项 1.2 Web服务有什么好处 1.3 Web服务和面向服务的架构 1.4 Web服务简史 1.4.1 从DCE/RPC到XML-RPC 1.4. ...

  6. 编程之美2013 初赛一 A - 竞价 学习大牛的思路

    这题我做了N久也做不出....赛后看了大牛AC的思路.... Program: #include<iostream> #include<cmath> #include<s ...

  7. TForm.ShowModal只是接管消息循环,禁止外部键盘和鼠标输入到别的窗口,但并不封锁其它窗口继续获取消息(比如WM_TIMER消息仍可被发送到别的窗口上)

    窗体上放一个TTimer,然后双击输入: procedure TForm1.Timer1Timer(Sender: TObject); var cvs: TCanvas; Rect: TRect; S ...

  8. ORACLE RMAN介绍

    本地连接: $ rman target /  or $ rman target / nocatalog 远程连接: $ rman target sys/sys@sky RMAN命令执行方式: 1.单条 ...

  9. ZOJ 3542 2011大连现场赛D题(简单模拟)

    Hexadecimal View Time Limit: 2 Seconds       Memory Limit: 65536 KB Hexadecimal is very important an ...

  10. 降低成本是永恒的追求(xamarin)

    减少为主线的成本始终是一个社会经济发展.经济活动似乎很.商业模式的出现相关.我记得早起写Web程序,真正的企业并不多忙.大部分时间处理与浏览器的问题之间的差异所带来. 有些型号也做了屏蔽这样的差别,有 ...