参考链接:

http://www.cnblogs.com/hont/p/5100472.html

上一篇是直接通过界面来控制动作的播放,这篇将使用脚本去管理对象的动作

API解析:

Animator.IsInTransition:是否处于过渡状态

状态机如下:

脚本如下:

TestAnimator.cs

 using UnityEngine;

 public class TestAnimator : MonoBehaviour {

     //------------------------------------------外部
public float Move = ;
public bool IsDying = false; //------------------------------------------内部
private Animator animator; //常数
private int baseLayerIndex;
private int idleStateHash;
private int runStateHash;
private int dyingStateHash;
private string movePara;
private string isDyingPara; void Start ()
{
animator = GetComponent<Animator>(); baseLayerIndex = animator.GetLayerIndex("Base Layer");
idleStateHash = Animator.StringToHash("Base Layer.Idle");
runStateHash = Animator.StringToHash("Base Layer.Run");
dyingStateHash = Animator.StringToHash("Base Layer.Dying");
movePara = "move";
isDyingPara = "isDying";
} void Update ()
{
//------------------------------------------播放动作
animator.SetFloat(movePara, Move);
if (IsDying)
{
animator.SetBool(isDyingPara, true);
IsDying = false;
} //------------------------------------------动作恢复
AnimatorStateInfo stateInfo;
int fullPathHash; //BaseLayer
stateInfo = animator.GetCurrentAnimatorStateInfo(baseLayerIndex);
if (!animator.IsInTransition(baseLayerIndex) && stateInfo.normalizedTime >= )
{
fullPathHash = stateInfo.fullPathHash;
if (fullPathHash == dyingStateHash)
{
animator.SetBool(isDyingPara, false);
}
}
} public void SetDying(bool state)
{
if (animator)
{
animator.SetBool(isDyingPara, state);
}
}
}

NewBehaviourScript.cs

 using UnityEngine;

 public class NewBehaviourScript : MonoBehaviour {

     public TestAnimator testAnimator;

     void Update ()
{
if (Input.GetKey(KeyCode.Q))
{
testAnimator.Move = ;
}
if (Input.GetKeyUp(KeyCode.Q))
{
testAnimator.Move = ;
}
if (Input.GetKeyDown(KeyCode.W))
{
testAnimator.IsDying = true;
}
if (Input.GetKeyDown(KeyCode.E))
{
testAnimator.SetDying(false);
}
}
}

按住Q,播放跑步动画;松开Q,播放站立动画;按下W,播放倒地动画;按下E,播放倒地恢复成站立的动画

[Unity动画]02.动画播放的更多相关文章

  1. Unity MegaFiers 顶点动画

        使用 MegaFiers 插件,能够使得Unity支持顶点动画的播放. 官方视频教程例如以下: 在这里简单測试使用下,环境例如以下: Blender 2.72 Unity 4.5.4 Mega ...

  2. 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器

    对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪 ...

  3. 关于Unity中Mecanim动画的重定向与动画混合

    应用 一个RPG游戏,里面有100种怪物,每种怪物其实都差不多的,行走,跳跃,攻击,难道动画师要调100次动画吗?其实不需要 Unity抽象出人形动画系统,用Unity简化版的骨骼来进行统一的管理,只 ...

  4. Unity Shader序列帧动画学习笔记

    Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 flo ...

  5. unity shader序列帧动画代码,顺便吐槽一下unity shader系统

    一.看到UNITY论坛里有些人求unity shader序列帧动画,写shader我擅长啊,就顺势写了个CG的shader.代码很简单,就是变换UV采样序列帧贴图,美术配置行数列数以及变换速度. Sh ...

  6. unity 对Animator动画系统的研究

    unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看 ...

  7. Android设备 cocos2dx 骨骼动画注册事件播放音效,退到后台再返回黑屏问题

    最近遇到一个cocos2dx 骨骼动画注册事件播放音效,在骨骼动画播放的时候,按HOME键退到桌面,再次打开游戏的时候,会黑屏. 解决办法如下,可能不是太完美,至少解决了大部分问题. 1.在org.c ...

  8. unity代码添加动画,并传参数

    测试界面 button一个 sprite一个 测试代码 public class BgObject : MonoBehaviour { void Start() { List<string> ...

  9. unity, 两个动画同时播

    法一,animationLayer. 处于不同animationLayer中的状态可以同时运行,即其中的动画可以同时播放. 所以通常一个角色至少需要用两个animationLayer,一个layer用 ...

随机推荐

  1. 【java】for循环嵌套

    循环嵌套:外循环控制行数,内循环控制每一行的列数,也就是每一行的元素个数 需求:打印出9*9的乘法表 class Demo { public static void main(String[] arg ...

  2. MMCM与PLL

    MMCM与PLL   1.the clock management title(CMT) 弄清楚BUFR, IBUFG,BUFG,GT,BUFH,是什么. 2.MMCM内部结构 3.PLL内部结构 4 ...

  3. 怎样在Qsys系统中添加第三方IP核

    1.新建Quartus II工程 2.新建Qsys系统 3.如果没有我们需要添加的IP,需要自己额外添加 4在我们新建的Quartus工程里面新建一个文件夹,命名为ip; 5.将我们已经下载好的IP文 ...

  4. PI Square中文论坛: PI SDK 开发中级篇| PI Square

    注: 为了更好的利用站内资源营造一个更好的中文开发资源空间,本文为转发修正帖,原作者为OSIsoft技术工程师王曦(Xi Wang),原帖地址:PI SDK 中级篇 来源:https://d.gg36 ...

  5. Azure SQL 数据库仓库Data Warehouse (1) 入门

    <Windows Azure Platform 系列文章目录> 在之前的项目中遇到了客户使用SQL数据仓库的场景,在这里记录一下 1.什么是SQL 数据库仓库 (SQL DW) SQL D ...

  6. ALGO-125_蓝桥杯_算法训练_王、后传说(DFS)

    问题描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地.各皇后都有自己的势力范围,但也总能找到相安无事的办 ...

  7. java中对HashMap遍历的方式

    第一种是利用HashMap的entrySet()方法: Map<String,String> map = new HashMap<String,String>(); Itera ...

  8. 【并发编程】使用BlockingQueue实现<多生产者,多消费者>

     MasterThread: 持有一个BlockingQueue队列,用于并发接收存储MetaData对象; 使用Hash一致性算法ketama,来选择SlaveThread节点; 从Blocking ...

  9. Qt error: stray '\241' in program

    转载:iGoforward 报错的意思是c++中的产生了编译错误. 该错误是指源程序中有非法字符,需要将非法字符去掉.一般是由于编程者(不用程序员这个名词是因为这种错误太低级)使用中文输入法 或者从别 ...

  10. Git初级

    一,安装git 一键安装 Mac 或 Windows. 二,下载一个工具书 Git 命令手册 free Git cheat sheet 三,安装完成之后需要先配置两个基本配置:用户名和邮箱 $ git ...