控制人物转向移动,动画播放的过程中插播其他动画后返回

人物转向移动的代码是我在网上粘贴后改动的-----------------------侵删---------------------------

难点:如何在A动画中插播B动画再返回

思路:开始我的想法是在两个动画之间create transition用代码控制返回,但是条件是2s播放一次,间隔时间的重制和这个有冲突,如何使B动画播放完毕后再返回,后来经大神指点(万分感谢呀O(∩_∩)O~~),在A动画播放的状态下判断时间,2s后直接播放B动画,transition 勾选Has Exit Time B播放完毕后就可以自己返回A不用代码控制。

附上代码参考:

  1 using UnityEngine;
  2 using System.Collections;
  3
  4 public class playeMove : MonoBehaviour
  5 {
  6
  7     public Animator PlayerAnimator;
  8     public const int HERO_UP = 0;
  9     public const int HERO_RIGHT = 1;
 10     public const int HERO_DOWN = 2;
 11     public const int HERO_LEFT = 3;
 12     float  FreakTime=3;
 13     //人物当前行走的方向状态
 14     public int state = 0;
 15     //人物移动速度
 16     public int moveSpeed =2;
 17
 18     //初始化人物位置
 19     public void Awake()
 20     {
 21         state = HERO_UP;
 22     }
 23     // Use this for initialization
 24     void Start()
 25     {
 26
 27     }
 28
 29     // Update is called once per frame
 30     void Update()
 31     {
 32
 33
 34         //获取控制的方向, 上下左右,
 35         float KeyVertical = Input.GetAxis("Vertical");
 36         float KeyHorizontal = Input.GetAxis("Horizontal");
 37         //Debug.Log("keyVertical" + KeyVertical);
 38         //Debug.Log("keyHorizontal" + KeyHorizontal);
 39         if (KeyVertical <0)
 40         {
 41             setHeroState(HERO_DOWN);
 42         }
 43         else if (KeyVertical >0)
 44         {
 45             setHeroState(HERO_UP);
 46         }
 47
 48         if (KeyHorizontal >0)
 49         {
 50             setHeroState(HERO_RIGHT);
 51         }
 52         else if (KeyHorizontal <0)
 53         {
 54             setHeroState(HERO_LEFT);
 55         }
 56
 57
 58
 59         //得到正在播放的动画状态
 60         AnimatorStateInfo info = PlayerAnimator.GetCurrentAnimatorStateInfo(0);
 61
 62         //如果没有按下方向键且状态不为walk时播放走路动画
 63         if (KeyVertical != 0 || KeyHorizontal != 0  && !info.IsName("Walk"))
 64         {
 65             PlayerAnimator.Play("Walk");
 66         }
 67         //否则如果按下方向键且状态为walk时播放静止动画
 68         else if((KeyVertical == 0 && KeyHorizontal == 0 && info.IsName("Walk") ))
 69         {
 70             PlayerAnimator.Play("Idle");
 71         }
 72
 73         //这里设定是玩家静止时隔2s会摆动一次
 74         if (KeyVertical == 0 && KeyHorizontal == 0)
 75         {
 76             //当玩家静止时,FreakTime才会计时
 77             if (info.IsName("Idle"))
 78             {
 79                 FreakTime -= Time.deltaTime;
 80                 if (FreakTime <= 0)
 81                 {
 82                     Debug.Log(FreakTime);
 83                     FreakTime = 2;
 84                     //FreakingOut设置为播放后自动退出到idle
 85                     PlayerAnimator.Play("FreakingOut ");
 86                 }
 87             }
 88         }
 89
 90
 91     }
 92
 93
 94     void setHeroState(int newState)
 95     {
 96         //根据当前人物方向与上一次备份的方向计算出模型旋转的角度
 97         int rotateValue = (newState - state) * 90;
 98         Vector3 transformValue = new Vector3();
 99
100         //播放行走动画
101
102         //模型移动的位置数值
103         switch (newState)
104         {
105             case HERO_UP:
106                 transformValue = Vector3.forward * Time.deltaTime;
107                 break;
108             case HERO_DOWN:
109                 transformValue = (-Vector3.forward) * Time.deltaTime;
110                 break;
111             case HERO_LEFT:
112                 transformValue = Vector3.left * Time.deltaTime;
113                 break;
114             case HERO_RIGHT:
115                 transformValue = (-Vector3.left) * Time.deltaTime;
116                 break;
117         }
118
119         transform.Rotate(Vector3.up, rotateValue);
120         //移动人物
121         transform.Translate(transformValue * moveSpeed, Space.World);
122         state = newState;
123     }
124
125
126 }
127  

时间: 2024-10-27 16:35:11

控制人物转向移动,动画播放的过程中插播其他动画后返回的相关文章

.net mvc中AOP 异常捕获后返回自定义的Json

.net mvc中封装了一些特性可以实现AOP,如常用的HandleErrorAttribute,ActionFilterAttribute,AuthorizeAttribute.自定义一个特性,继承这些特性,并重写里面的方法就可以AOP切入到Action中的关注点.本篇文章主要对笔者在使用HandleErrorAttribute的过程中遇到的一个问题进行分享. 我们在action中会用try..catch..进行异常处理,笔者在catch中返回一个json(标示失败).我发现所有的action

JS函数库:页面滚动过程中元素产生动画效果 WOW.js

官网 WOW.js依赖animate.css, 所以它支持animate.css多达60多种动画效果. 浏览器兼容:IE9以及以前的版本不适用 使用方法: 1.引入文件 <link rel="stylesheet" href="css/animate.min.css" /> <script type="text/javascript" src="js/wow.min.js"></script>

MySQL 如何在一个语句中更新一个数值后返回该值 -- 自增长种子竞态问题处理

什么是竞态问题? 假设有一个计数器,首先当前值自增长,然后获取到自增长之后的当前值.自增长后的值有可能被有些操作用来当做唯一性标识,因此并发的操作不能允许取得相同的值. 为什么不能使用使用UPDATE语句更新计数器,然后SELECT语句获取自增长后的当前值?问题在于并发的操作有可能获取到相同的计数器值. CREATE TABLE counters ( id INT NOT NULL UNIQUE, -- 计数器ID,多个计数器可以存在一个表中, value INT -- 计数器当前值 ); --

jQuery动画高级用法(上)——详解animation中的.queue()动画队列插队函数

决定对animate方面做一些总结,希望能给大家一些启发和帮助 从一个实际应用谈起 今天不谈animate().fadeIn().fadeOut().slideUp().show().hide()诸如此类的具体动画函 数,而谈谈几个并不常用的,甚至说是有点风马牛不相及,但又十分十分重要的动画函数queue(),dequeue(),和stop(). 先让我们从一个简单的例子谈,假设有一个购物功能,在结账之前,用户仍然可以把购物车里的删除至备选栏中(也许因为用户的资金不足,可以存储至下次购买) 好,

PowerPoint演示文稿中设置自定义动画

动态的东西,总是给人活灵活现的感觉.在制作演示文稿时,除了会设置幻灯片的切换方式外,还通常会为幻灯片中的某些内容(如图片.文字等)设置动画效果,使幻灯片欣赏起来不至于太呆板. 1.制作进入动画效果 选中需要设置动画效果的对象,如文本.图片等.单击"动画"选项卡,单击"无动画"后的向下箭头,选择一种动画效果即可,如图1所示. 2.制作强调动画效果 细心的读者会发现,在前一种动画设置中,PowerPoint只提供了对象进入时的动画效果,如要设置退出.强调等效果该怎么办呢

Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画

Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画 引子 这段时间一直努力在把早期版本的拇指接龙游戏(Cocos2d-x 2.2.3+CocoStudio 1.4.0.1)升级到当前相对稳定的高大上环境--Cocos2d-x 3.8.1+Cocos Studio 2.3.2.行程中遇到不少麻烦,时间不知不觉像流水一样悄然逝去(这正是我时不时酸酸地想起"程序猿"三字的主要原因).想之再三,还是努力记录下来,一来为自己可能逝去的记忆,二来为

Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果

目前Android的实现是:有来电时,音乐声音直接停止,铃声直接直接使用设置的铃声音量进行铃声播放. Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果. 如果要实现这个效果,首先要搞清楚两大问题: 1.来电时的代码主要实现流程. 2.主流音乐播放器在播放过程中,如果有来电,到底在收到了什么事件后将音乐暂停了? 一:来电时的代码主要实现流程 我不是第一研究来电代码的人,网上已经有高手对这个流程剖析过,不是不完全符合我的要求,我参考过的比较有价值的是如下两个

想控制GIF图片动画播放吗?试试gifffer.js

在线演示:http://www.gbtags.com/gb/demoviewer/3578/c6bec39a-61ae-4017-8e23-e0bc1eeb740f/example|index.html.htm 大家可能都斯通见惯了互联网上普遍使用的GIF图片,但是有没有想过让用户自己尝试控制GIF动画的播放呢?在今天这篇文章中,我们将介绍一个超棒的Javascript小类库 - gifffer.js,它可以帮助你添加控制GIF动画功能,想不想尝试一下? 如何使用? 首先引用JS,如下: <sc

NS2仿真过程中nam动画的保存

关于NS2仿真过程中nam动画的保存为gif格式大家可以参考科学网的这篇博客,http://blog.sciencenet.cn/blog-281551-390046.html,通过实验,个人觉得其实现过程比较复杂. 当然nam程序除了linux版本以外,还有windows版本.可到如下网站进行下载.http://www.isi.edu/nsnam/nam/ ,然后即可利用该可执行文件打开仿真时保存的.nam文件.如在"运行"中键入D:\nam-1.0a11a-win32.exe D: