[Unity动画]02.动画播放
参考链接:
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.动画播放的更多相关文章
- Unity MegaFiers 顶点动画
使用 MegaFiers 插件,能够使得Unity支持顶点动画的播放. 官方视频教程例如以下: 在这里简单測试使用下,环境例如以下: Blender 2.72 Unity 4.5.4 Mega ...
- 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器
对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪 ...
- 关于Unity中Mecanim动画的重定向与动画混合
应用 一个RPG游戏,里面有100种怪物,每种怪物其实都差不多的,行走,跳跃,攻击,难道动画师要调100次动画吗?其实不需要 Unity抽象出人形动画系统,用Unity简化版的骨骼来进行统一的管理,只 ...
- Unity Shader序列帧动画学习笔记
Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 flo ...
- unity shader序列帧动画代码,顺便吐槽一下unity shader系统
一.看到UNITY论坛里有些人求unity shader序列帧动画,写shader我擅长啊,就顺势写了个CG的shader.代码很简单,就是变换UV采样序列帧贴图,美术配置行数列数以及变换速度. Sh ...
- unity 对Animator动画系统的研究
unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看 ...
- Android设备 cocos2dx 骨骼动画注册事件播放音效,退到后台再返回黑屏问题
最近遇到一个cocos2dx 骨骼动画注册事件播放音效,在骨骼动画播放的时候,按HOME键退到桌面,再次打开游戏的时候,会黑屏. 解决办法如下,可能不是太完美,至少解决了大部分问题. 1.在org.c ...
- unity代码添加动画,并传参数
测试界面 button一个 sprite一个 测试代码 public class BgObject : MonoBehaviour { void Start() { List<string> ...
- unity, 两个动画同时播
法一,animationLayer. 处于不同animationLayer中的状态可以同时运行,即其中的动画可以同时播放. 所以通常一个角色至少需要用两个animationLayer,一个layer用 ...
随机推荐
- linux系统中安装JDK 查看安装的ava版本
一.安装JDK 1.在/usr/目录下创建java目录 [root@localhost ~]# mkdir/usr/java[root@localhost ~]# cd /usr/java 2.下载j ...
- PHP 中 call_user_func 函数 和 call_user_func_array 函数的区别
PHP 中 call_user_func() 函数 和 call_user_func_array() 函数都是回调函数,在写接口的时候经常会用到,但是他们有什么区别呢? 它们的第一个参数都是被调用的回 ...
- 企业数据总线(ESB)和注册服务管理(dubbo)的区别
企业数据总线(ESB)和注册服务管理(dubbo)的区别 转载 2015年11月04日 09:05:14 7607 企业数据总线(ESB)和注册服务管理(dubbo)的区别 2015-03-09 0 ...
- windows的消息传递--消息盒子
例如对windows发消息让文本选中. SendMessage(Text1.hwnd,EM_GETSEL,0,-1 ); EC_LEFTMARGIN(&H1) EC_USEFONTIN ...
- 学习笔记之HTML 教程 | 菜鸟教程
HTML 教程 | 菜鸟教程 http://www.runoob.com/html/html-tutorial.html 菜鸟教程在线编辑器 http://www.runoob.com/try/try ...
- 廖雪峰Java1-4数组操作-2数组排序
冒泡排序法 将第一个值和后面的值,挨个比较,如果手里的值比序列的值小,就交换数据,拿新的数字继续比较,直到最后. 再将第二个值和后面的值,挨个比较. 循环往复,排序完成. int[] ns = {28 ...
- Scrapy学习篇(八)之settings
Scrapy设定(settings)提供了定制Scrapy组件的方法.你可以控制包括核心(core),插件(extension),pipeline及spider组件.设定为代码提供了提取以key-va ...
- fiddler 手机 https 抓包 以及一些fiddler无法解决的https问题http2、tcp、udp、websocket证书写死在app中无法抓包
原文: https://blog.csdn.net/wangjun5159/article/details/52202059 fiddler手机抓包原理 fiddler手机抓包的原理与抓pc上的web ...
- Centos7下安装Python3.7.2
在我的Centos7中,Python默认是安装的,输入python 直接可以查看版本号,入下图 注意:如果本机安装了python2,尽量不要管它,使用python3运行python脚本就好,因为可能有 ...
- MySql 索引优化实例
查询语句 SELECT customer_id,title,content FROM `product_comment` WHERE audit_status=1 AND product_id=199 ...